Roger,
您正在寻找的是一种通过命令行工具 xcodebuild 设置 GCC_PREPROCESSOR_MACROS 的方法。 xcodebuild 的手册页显示了应用这些设置的格式,但是概要部分仅将此称为“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 ...]
最终,您可以使用此格式并了解您想要更改的实际构建设置名称,直接在命令行上设置任何构建设置值。自然,这就提出了一个问题……
如何找到构建设置名称?
很高兴你问了! Xcode 4 的侧边栏是最容易查找实际命令行构建设置名称的地方。
当寻找构建设置名称时,可以查看 Xcode 4 实用工具侧边栏的快速帮助检查器。
- 访问项目的“构建设置”屏幕。
- 通过单击 Xcode 右上角“管理器”按钮旁边的“实用程序”按钮,确保侧边栏(Xcode 称之为“实用程序”)可见。
- 在实用工具侧栏中,确保“快速帮助检查器”可见。
或者,使用 Option+Command+2 直接显示快速帮助检查器!
最后,您准备好找到您的构建设置:
- 搜索要更改的构建设置或滚动浏览构建设置列表。
- 单击您感兴趣的构建设置并观察快速帮助检查器更新。
- 快速帮助检查器的“声明”部分显示您要使用的命令行构建设置名称。
对于您最初询问的预处理器宏设置,该设置是:
GCC_PREPROCESSOR_DEFINITIONS
将其拉回您原来的问题,您只需提供 SETTING_NAME='DESIRED_VALUE' 以及 xcodebuild 命令的其余部分即可在命令行上设置此构建设置。在我将一个名为“TestApp”的快速小测试项目放在一起的情况下,我希望将预处理器宏“BKM”设置为值 1,我的 xcodebuild 命令将是:
xcodebuild -project TestApp.xcodeproj -scheme TestApp GCC_PREPROCESSOR_DEFINITIONS='${继承} BKM=1'
你为什么把 ${inherited} 放在那里?
如果您正在使用预处理器宏,那么您可能正在使用多个预处理器宏。其中一些您可能不想从命令行更改,但仍然已编码到目标或项目的构建设置中。使用“${inherited}”指示 xcodebuild 也使用在更高级别定义的构建设置,而不是仅使用我们在 xcodebuild 命令中定义的设置。在大多数情况下,您需要使用 ${inherited} 来提取您设置的任何其他配置值。
我必须将值用撇号括起来吗?
如果您想设置多个值,那么您需要将值用撇号括起来,否则如果您从命令行设置两个或多个预处理器宏,则第二个+宏将被解释为构建设置而不是预处理器宏...不太正确的行为。撇号是一种将一个设置的多个值收集在一起的方法。对于我的示例 xcodebuild 命令,我想让 xcodebuild 使用继承的预处理器宏集以及我的特定 BKM 设置,因此我将值括在撇号中,告诉 xcodebuild 将它们都视为预处理器宏。
这也适用于工作区吗?
绝对地!只需修改命令以使用 -workspace 参数而不是 -project 参数,您就可以开始工作了!