본문 바로가기

C++

맥(macOS) Big Sur의 Xcode 12.5에서 SFML을 사용하기 위한 설정

예전에 Xcode에서 SFML을 사용하기 위한 설정을 했었는데 맥(macOS)과 Xcode의 업데이트때문인지 에러가 발생하며 작동하지 않습니다.

2019.01.29 - [C++] - macOS High Sierra의 Xcode에서 SFML을 사용하기 위한 설정

 

macOS High Sierra의 Xcode에서 SFML을 사용하기 위한 설정

macOS High Sierra의 Xcode 9.2에서 SFML을 사용하기 위해 설정을 했습니다. https://www.sfml-dev.org/tutorials/2.4/start-osx.php 시스템 요구사항 64비트의 인텔 맥 라이온 이후 Xcode 과 clang , Command Lin..

namwhis.tistory.com

조사하면서 해결한 내용의 정리입니다.

 

제일 먼저 접한 에러내용입니다.

에러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실행 윈도우)을 봅니다.

 

반응형