예전에 Xcode에서 SFML을 사용하기 위한 설정을 했었는데 맥(macOS)과 Xcode의 업데이트때문인지 에러가 발생하며 작동하지 않습니다.
2019.01.29 - [C++] - macOS High Sierra의 Xcode에서 SFML을 사용하기 위한 설정
조사하면서 해결한 내용의 정리입니다.
제일 먼저 접한 에러내용입니다.
에러1
PhaseScriptExecution failed with a nonzero exit code
자세한 내용을 보면 "Cannot get the real path for source ... couldn't copy ..."의 내용이 있는데 소스 경로 및 SFML의 설치 경로와 전혀 관계가 없는 경로입니다.
프로젝트의 xcodeproj파일의 "Build Phases >> Run Script"에서 해당 경로의 설정을 확인할 수 있었습니다. (파란색 박스)
경로를 수정하면 해결될 것 같은데.귀찮습니다..
"Run script >> For install builds only" (빨간색 박스) 에 체크를 해서 실행시에는 스크립트가 작동하지 않도록 하니 해결되었습니다.
그러나 에러는 혼자이길 좋아하지 않습니다. 다음 에러가 고개를 듭니다.
에러2
Reason: no suitable image found. Did find:
/Library/Frameworks/sfml-system.framework/Versions/2.5.1/sfml-system: code signature in (/Library/Frameworks/sfml-system.framework/Versions/2.5.1/sfml-system) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.
Library Validation로 처리한 결과 SFML의 Code Signature가 유효하지 않다는 내용입니다.
프로젝트의 xcodeproj파일의 "Signing & Capabilities >> Hardened Runtime >> Runtime Exceptions >> Disable Library Validation" (빨간색 박스) 에 체크를 해서 Library Validation를 사용하지 않도록 설정하니 해결되었습니다.
마지막 최종에러가 등장합니다.
에러3
확인된 개발자가 등록한 응용 프로그램이 아니기 때문에 'sfml-system.framework' 사용을 차단했습니다.
App Store가 아닌 곳에서 다운받은 프로그램을 실행할 때 차단되는 것과 동일한 에러가 발생합니다만 프로그램이 아닌 framework이기 때문에 '오른쪽클릭해서 열기'의 방법으로 해결할 수 없습니다.
"시스템 환경설정 >> 보안 및 개인 정보 보호 >> 일반 >> 다음에서 다운로드한 앱 허용"(빨간색 박스)에 차단된 내용이 표시되므로 "확인 없이 허용"을 클릭해서 개별 허용을 할 수 있으나 SFML의 framework에는 sfml-system.framework하나가 아닌 sfml-audio, sfml-network..등의 여러 가지가 포함되어 있어 이 방법으로는 해결되지 않습니다.
모든 곳에서 다운로드한 프로그램을 실행하도록 허가 해 줘야 합니다.
터미널에서 spctl명령을 이용합니다.
sudo spctl --master-disable
모든 곳 활성화 | sudo spctl --master-disable |
모든 곳 비활성화 | sudo spctl --master-enable |
모든 곳 활성화/비활성화 상태확인 | sudo spctl --status |
모든 보스(에러)를 해치우고 클리어 화면(SFML실행 윈도우)을 봅니다.
'C++' 카테고리의 다른 글
백준 3053번 택시기하학 문제에서 배운것들-택시기하학, 원주율값(π: 파이) M_PI, double과 float의 차이 (0) | 2019.10.16 |
---|---|
데이터형의 최대값과 최소값 정리입니다. (0) | 2019.08.21 |
구조체(Struct)혹은 클래스(Class)를 정렬해보자. (0) | 2019.08.09 |
cin과 getline을 같이 사용할때 cin.ignore()이 필요한 이유 기록 (4) | 2019.07.09 |
기약분수, 서로소, 최대공약수(GCD), 유클리드 호제법, 추가) 최소공배수(LCM) (0) | 2019.06.13 |