2010-04-25 2 views

답변

18

Cmd + I 정보 대화 상자를 여는 중입니다. 그런 다음 "빌드"탭에서 "프리 프로세서 매크로"설정을 찾습니다. 거기에 매크로를 추가하십시오. 당신이 xcodebuild 인수에

GCC_PREPROCESSOR_DEFINITIONS="foo=bar" 

를 추가 할 수 있도록 설정 이름을 찾을 수 있습니다

은 ... GCC_PREPROCESSOR_DEFINITIONS입니다.

+4

을 * –

+1

나는 무엇을 믿는 KennyTM은 일단 GUI (GUI 사용)가되면 xcodebuild에서 제대로 작동합니다. – nall

+2

xcodebuild의 옵션/플래그를보고 있었는데 설정이 기본 사용법 구문의 일부인지 알지 못했습니다. 감사. –

29

GCC_PREPROCESSOR_DEFINITIONSxcodebuild 명령 줄에 전달했습니다.

셸과 같은 단어 분리 및 인용 처리에 대해서는 인수가 다시 평가되므로 매크로 값이 단순한 1 (예 : NSString 리터럴)이 아닌 경우 특히주의해야합니다.

GCC_PREPROCESSOR_DEFINITIONS을 설정 값 (단일 인용 부호가 있으므로 스크립트에서 확장하지 않지만 빌드의 셸에서는이를 확장합니다.) 내에서 확장하는 것이 중요합니다. 그렇지 않으면이 속성에 대한 프로젝트의 빌드 설정이 손실됩니다.

은 다음 코드는 좋은 bash는 배열에 정의를두고 다음 물건을 멋지게 탈출 도착 쉘 방식으로 xcodebuild 명령 줄에 배열 확장 : xcodebuild를 사용하는 경우 *

defines=(TESTING=1 '[email protected]"http://192.168.0.101:8080"') 

xcodebuild -verbose -scheme "MyAppScheme" \ 
    GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS '"$(printf '%q ' "${defines[@]}")" 
+2

당신은 가치를 부여하는 것이 의무인가, TESTING = 1 이냐 아니냐고 말할 수 있습니까? #define TESTING과 같은 것이 있습니까? – karim

+0

자, 큰 따옴표를 사용하고 $ 값을 제거해야합니다. GCC_PREPROCESSOR_DEFINITIONS = '$ value $ {e}'는 작동하지 않지만 GCC_PREPROCESSOR_DEFINITIONS = "$ {e}"는 작동합니다. – karim

+0

@karim $ e는 무엇인지 모르겠지만이 답변의 요점을 완전히 놓쳤다는 느낌을 받게됩니다. 또한 정의 배열은 사용자 정의 정의를 저장하는 곳입니다. 위의 예는 단지 예일뿐입니다. 어쩌면 배열이 완전히 다르게 보일 것입니다. – lhunath