Xcode 프로젝트에서 속성을 설정하여 조건부 컴파일에 대한 기호를 설정할 수 있습니까?
내 목표는 가져 오기 / 포함을 사용하지 않고도 모든 파일에 사용할 수있는 심볼을 만들어 공통 클래스 집합이 일부 프로젝트에서 특별한 동작을 가질 수 있도록하는 것입니다. 다음과 같지만 내 기호가 있습니다.
#if TARGET_IPHONE_SIMULATOR
...
#endif
답변
타겟 또는 프로젝트 설정으로 이동하여 왼쪽 하단의 기어 아이콘을 클릭하고 “사용자 정의 설정 추가”를 선택합니다. 새 설정 이름은이어야하며 GCC_PREPROCESSOR_DEFINITIONS
오른쪽 필드에 정의를 입력 할 수 있습니다.
Steph의 의견에 따라 전체 구문은 다음과 같습니다.
constant_1=VALUE constant_2=VALUE
( 문의 경우) 값을 제공하는 대신 기호를 #define하려는 경우 ‘=’ 가 필요 하지 않습니다.#ifdef
답변
사용자 정의 설정을 만들 필요가 없습니다. 기본 제공 설정 “전 처리기 매크로”는 잘 작동합니다.
대체 텍스트 http://idisk.mac.com/cdespinosa/Public/Picture%204.png
동일한 접두사 파일을 사용하는 여러 대상 또는 프로젝트가있는 경우 대신 미리 컴파일 된 헤더에서 사용되지 않는 전 처리기 매크로를 사용하여 매크로 정의의 차이가 불필요한 추가 미리 컴파일 된 헤더 집합을 트리거하지 않도록합니다.
답변
부록으로이 기술을 사용하여 대상에서 문자열을 정의하는 경우 다음과 같이 정의하고 사용해야했습니다.
빌드 설정-> 전 처리기 매크로에서 백 슬래시는 정의에서 중요합니다.
APPURL_NSString=\@\"www.foobar.org\"
그리고 소스 코드에서 :
objectManager.client.baseURL = APPURL_NSString;
답변
*_Prefix.pch
파일을 사용하여 프로젝트 전체 매크로를 선언 할 수 있습니다 . 해당 파일은 일반적으로 기타 소스 그룹에 있습니다.
답변
“GCC 4.2 전처리”아래에 있습니다 (또는 검색 창에 “prepro”를 입력) …
…하지만, 제 삶을 위해 그것을 작동시킬 수는 없습니다.
표준 디버그 및 릴리스 구성이 있고 디버깅 구성에서 DEBUG = 1을 정의하고 싶습니다. 그러나 값으로 추가 한 후 :
(설정 창에서)> 전 처리기 매크로 : DEBUG = 1
#if DEBUG
printf("DEBUG is set!");
#endif
… 인쇄하거나 호출하지 않습니다. 날 미치게 해 …
답변
빌드 설정에 표시되지 않는 GCC 전처리 섹션에 대한 Kevin Laity의 의견 (cdespinosa의 답변 참조)에 대한 응답으로 Active SDK를 그 뒤에 (Base SDK)라고 표시하면이 섹션이 표시됩니다. 프로젝트> 활성 대상 설정> XXX (Base SDK) 메뉴를 선택하여이를 수행 할 수 있습니다. XCode (Base SDK)의 다른 버전에서는 (프로젝트 설정 또는 프로젝트 기본값)과 같이 다를 수 있습니다.
이 섹션이 나타나면 사용자 정의 설정을 만드는 대신 프로세서 매크로에 정의를 추가 할 수 있습니다.
답변
Xcode 9.4.1 및 C ++ 프로젝트의 경우. 디버그 및 릴리스 빌드 const char*
모두에 전 처리기 매크로 추가 .