командная строка xcodebuild игнорирует GCC_PREPROCESSOR_DEFINITIONS - PullRequest
7 голосов
/ 22 марта 2012

Я пытаюсь запустить xcodebuild с разными макросами предварительной обработки.

Я пробовал:

xcodebuild -scheme myscheme \
           -configuration "Archive" \
           -sdk "iphoneos5.1" 
           archive \
           CONFIGURATION_BUILD_DIR=../build \
           GCC_PREPROCESSOR_DEFINITIONS=ADHOC

, но я получил ошибку компиляции из-за того, что препроцессор не использовался:

Я не смог увидеть его с флагом -D команды компиляции

Но он отображается в начале скрипта

Build settings from command line:
        CONFIGURATION_BUILD_DIR = ../build
        GCC_PREPROCESSOR_DEFINITIONS = ADHOC
        SDKROOT = iphoneos5.1

Код висточник ошибки компиляции:

#ifdef ADHOC
NSUInteger toto = 0;
#endif

, но я получаю ошибку use of undeclared identifier для toto

ps: если я определю макросы препроцессора в Xcode, то эти значенияиспользуется, мои переопределены, и архивирование сделано.Но я хочу сделать несколько сборок, основанных на разных определениях препроцессора (что звучит лучше, чем создавать новые конфигурации или схемы сборки)

1 Ответ

2 голосов
/ 27 февраля 2013

Я должен использовать двойную кавычку и удалить значение $. Я имел,

GCC_PREPROCESSOR_DEFINITIONS='$value ${e}', 

, который не работал, но

GCC_PREPROCESSOR_DEFINITIONS="${e}" 

работает.

Где e - переменная внутри цикла,

environments=("TEST1" "TEST2" "TEST3" "TEST4" "TEST5" "PROD")
for e in "${environments[@]}"
   do
....... commands
   done

Если я использую

GCC_PREPROCESSOR_DEFINITIONS='$value ${e}'

Тогда я должен использовать, как,

GCC_PREPROCESSOR_DEFINITIONS='$value ADHOC=1'

Это сработало в одном из скриптов сборки.

...