2013-08-07 82 views
5

我目前使用xcodebuild来自动化iOS测试。通过xcodebuild传递编译器标志

现在,我一直试图通过Xcode直接将编译器标志传递给编译器。这些标志是:-fprofile-arcs -ftest-coverage

我没有修改xcodeproj的自由,这就是为什么我要通过xcodebuild命令注入这些标志。

这将是这样的:

xcodebuild -project path/to/my.xcodeproj -scheme MyApp -fprofile-arcs -ftest-coverage 

是不是可行?怎么样?

+1

尝试使用OTHER_CFLAGS参数 – borrrden

+0

的OTHER_CFLAGS参数已经在xcodeproj设置使用可悲的是:(设置他们,但我得到了一个解决方案:)下面看。 – aspyct

回答

5

显然大多数编译器标志可以表示为常量,并且这些可以通过xcodebuild轻松地传递给编译器。

要获取它们,只需在xcode build settings视图中选择该选项,然后点击command-C(copy)。在我的情况下,他们是GCC_GENERATE_TEST_COVERAGE_FILESGCC_INSTRUMENT_PROGRAM_FLOW_ARCS

我的命令大致是这样的:

xcodebuild GCC_GENERATE_TEST_COVERAGE_FILES=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES ... 
+2

请注意,这个答案可能会导致混淆。你并不是真的在这里传递编译器标志,只是覆盖了一些Xcode环境标志的值,而后者又设置了相应的编译器标志。如果你想设置一些自定义的编译器标志,那么你需要重写OTHER_CFLAGS env var。 –

2

是的,所有的编译器实际上设定归结为字符串键值对。我回答了有关在命令行中,这只是适用于这些设置,设置预处理器宏一个非常类似的问题,你想设置:

Setting a #define from the command line in xcode 4.6

我还想提请大家注意使用$ {继承} - 使用这个值允许你使用Xcode项目指定的值并附加你自己的值。对于每个您通过复制粘贴位于构建设置包括文档可以在这里找到:

http://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html

你能得到它的工作很高兴 - 现在你真的可以让xcodebuild联编做更多为您而不需要更改目标Xcode项目!

+0

有趣的,谢谢你的额外信息:) – aspyct

2

要设置编译器标志为xcodebuild,您需要将它们放在OTHERCFLAGS选项中。

例如:

xcodebuild -project path/to/my.xcodeproj -scheme MyApp \ 
    OTHERCFLAGS="-fprofile-arcs -ftest-coverage"