2010-04-25 66 views
20

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

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

回答

18

Cmd + I在项目上打开“信息”对话框。然后在“Build”选项卡中找到“Preprocessor Macros”设置。 在那里添加宏。

...哪里可以找到设置名称为GCC_PREPROCESSOR_DEFINITIONS,所以你可以添加

GCC_PREPROCESSOR_DEFINITIONS="foo=bar" 

到xcodebuild联编参数。

+4

*使用xcodebuild联编时* – 2010-04-25 14:57:30

+1

我相信什么KennyTM说,一旦安装(使用GUI),xcodebuild就可以正常工作。 – nall 2010-04-25 15:19:39

+2

我在看xcodebuild的选项/标志,甚至没有注意到设置设置是基本用法语法的一部分。谢谢。 – 2010-04-26 19:19:47

29

您在xcodebuild命令行上通过GCC_PREPROCESSOR_DEFINITIONS

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

同样重要的是要扩大你的设定值内GCC_PREPROCESSOR_DEFINITIONS(单引号,这样你的脚本不扩张,但生成的shell扩展的话),否则你会失去你的项目的构建设置该属性。

下面的代码使你定义了一个不错的bash的数组,然后展开在的方式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 2013-02-27 09:51:25

+0

好的,我必须使用双引号并删除$值。我曾经,GCC_PREPROCESSOR_DEFINITIONS ='$ value $ {e}',这不起作用,但GCC_PREPROCESSOR_DEFINITIONS =“$ {e}”起作用。 – karim 2013-02-27 10:22:20

+0

@karim我不知道$ e是什么,但我感觉你完全错过了这个答案的要点。此外,定义数组是您放置自定义定义的位置。上面的只是一个例子。很可能你的数组看起来完全不同。 – lhunath 2013-02-28 13:01:13