xcodebuild命令行忽略GCC_PREPROCESSOR_DEFINITIONS

Dir*_*nry 7 xcodebuild ios xcode4 xcode4.3

我正在尝试使用不同的预处理宏启动xcodebuild.

我试过了 :

xcodebuild -scheme myscheme \
           -configuration "Archive" \
           -sdk "iphoneos5.1" 
           archive \
           CONFIGURATION_BUILD_DIR=../build \
           GCC_PREPROCESSOR_DEFINITIONS=ADHOC
Run Code Online (Sandbox Code Playgroud)

但由于未使用预处理器,我收到了编译错误:

我无法使用编译命令的-D标志看到它

但它显示在脚本的开头

Build settings from command line:
        CONFIGURATION_BUILD_DIR = ../build
        GCC_PREPROCESSOR_DEFINITIONS = ADHOC
        SDKROOT = iphoneos5.1
Run Code Online (Sandbox Code Playgroud)

编译错误原点的代码是:

#ifdef ADHOC
NSUInteger toto = 0;
#endif
Run Code Online (Sandbox Code Playgroud)

但我得到一个use of undeclared identifier错误toto

ps:如果我在Xcode中定义预处理器宏,则使用这些值,覆盖我的,并完成归档.但我确实希望根据不同的预处理器定义进行多次构建(这听起来比创建新的构建配置或方案更好)

kar*_*rim 2

我必须使用双引号并删除 $value。我有,

GCC_PREPROCESSOR_DEFINITIONS='$value ${e}', 
Run Code Online (Sandbox Code Playgroud)

这没有用,但是

GCC_PREPROCESSOR_DEFINITIONS="${e}" 
Run Code Online (Sandbox Code Playgroud)

作品。

其中,e 是循环内的变量,

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

如果我使用

GCC_PREPROCESSOR_DEFINITIONS='$value ${e}'
Run Code Online (Sandbox Code Playgroud)

然后我必须使用像,

GCC_PREPROCESSOR_DEFINITIONS='$value ADHOC=1'
Run Code Online (Sandbox Code Playgroud)

这在构建脚本之一中有效。