25

使用 xcodebuild 时如何定义预处理器宏?

我需要使用一堆不同的配置来构建我的应用程序,并且我想使用一个 shell 脚本来执行此操作,该脚本使用不同的预处理器宏多次运行 xcodebuild。

4

2 回答 2

37

GCC_PREPROCESSOR_DEFINITIONS你在xcodebuild命令行上传递。

请记住,该参数将被重新评估以进行类似 shell 的分词和引号处理,因此您需要小心,特别是当您的宏值不仅仅是简单1的 s(例如 NSString 文字)时。

同样重要的是扩展GCC_PREPROCESSOR_DEFINITIONS您设置的值的内部(单引号,因此您的脚本不会扩展它,但构建的外壳会扩展它),否则您将丢失项目的此属性的构建设置。

以下代码将您的定义放入一个不错的 bash 数组中,然后在xcodebuild命令行中扩展该数组,从而使 shell 的东西得到很好的转义:

defines=( TESTING=1 'IWISH_HOST=@"http://192.168.0.101:8080"' )

xcodebuild -verbose -scheme "MyAppScheme" \
    GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS '"$(printf '%q ' "${defines[@]}")"
于 2012-11-25T20:26:13.100 回答
18

Cmd + I 在项目上打开信息对话框。然后在“构建”选项卡中,找到“预处理器宏”设置。在那里添加宏。

...您可以在哪里找到设置名称GCC_PREPROCESSOR_DEFINITIONS,因此您可以添加

GCC_PREPROCESSOR_DEFINITIONS="foo=bar"

到 xcodebuild 参数。

于 2010-04-25T13:42:29.740 回答