在xcode 4.6中从命令行设置#define

Rog*_*rat 8 xcode xcodebuild xcode4

我正在尝试使用xcodebuild进行命令行构建时设置#define宏并且没有运气.

我已经尝试过-DMYMACRO=1,MYMACRO=1我能想到的其他一切都没有用.

如何从命令行设置#define?

Bry*_*ial 26

罗杰,

您正在寻找的是通过命令行工具xcodebuild设置GCC_PREPROCESSOR_MACROS的方法.xcodebuild的手册页显示了应用这些设置的格式,但是SYNOPSIS部分仅将其称为"setting = value ..."

 xcodebuild [-project projectname] -scheme schemename [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...]
 xcodebuild -workspace workspacename -scheme schemename [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...]
Run Code Online (Sandbox Code Playgroud)

最终,您可以使用此格式直接在命令行上设置任何构建设置值,并了解您希望更改的实际构建设置名称.当然,这提出了一个问题......

如何找到构建设置名称?

很高兴你问!Xcode 4的侧边栏是查找实际命令行构建设置名称的最简单方法.

带注释的构建设置屏幕剪辑

在查找构建设置名称时,Xcode 4的Utilities侧边栏的快速帮助检查器是可以查看的地方.

  1. 访问项目的"构建设置"屏幕.
  2. 通过单击Xco​​de右上角"管理器"按钮旁边的"实用程序"按钮,确保可以看到侧栏(Xcode称为"实用程序").
  3. 在"实用程序"侧栏中,确保显示"快速帮助检查器".

或者,使用Option + Command + 2直接显示快速帮助检查器!

最后,您已准备好找到您的构建设置:

  1. 要么搜索要更改的构建设置,要么滚动浏览构建设置列表.
  2. 单击您感兴趣的构建设置,并观察Quick Help Inspector更新.
  3. "快速帮助"检查器的"声明"部分显示了要使用的命令行构建设置名称.

对于您最初询问的预处理器宏设置,该设置为:

GCC_PREPROCESSOR_DEFINITIONS

将其重新拉回原始问题,您只需提供SETTING_NAME ='DESIRED_VALUE'以及其余的xcodebuild命令,即可在命令行上设置此构建设置.在一个快速的小测试项目的情况下,我把所谓的'TestApp'放在一起,我希望将预处理器宏'BKM'设置为值1,我的xcodebuild命令将是:

xcodebuild -project TestApp.xcodeproj -scheme TestApp GCC_PREPROCESSOR_DEFINITIONS ='$ {inherited} BKM = 1'

为什么你坚持$ {inherited}?

如果您使用的是预处理器宏,那么您可能拥有多个正在使用的宏.其中一些您可能不想从命令行更改,但仍编码到目标或项目的构建设置中.使用'$ {inherited}'指示xcodebuild也使用更高级别定义的构建设置,而不是仅使用我们在xcodebuild命令中定义的构建设置.在大多数情况下,您需要使用$ {inherited}来提取您已设置的任何其他配置值.

我是否必须将值包装在撇号中?

如果要设置多个值,则是,您将需要将值包装在撇号中,否则如果从命令行设置两个或更多预处理器宏,则第二个+ +将被解释为构建设置而不是预处理器宏......不太正确的行为.撇号充当一种为设置收集多个值的方法.在我的示例xcodebuild命令的情况下,我想让xcodebuild使用继承的一组预处理器宏以及我的特定BKM设置,因此我将值包装在撇号中以告诉xcodebuild将它们都视为预处理器宏.

这也适用于Workspaces吗?

绝对!只需修改命令即可使用-workspace参数而不是-project参数,您将开始营业!