在命令行中的xcode 4.6设置一个的#define(Setting a #define from

2019-08-18 06:50发布

我试图使用xcodebuild联编和有没有运气做一个命令行构建时被置#define宏。

我试着-DMYMACRO=1MYMACRO=1一切我能想到的和没有什么作品。

如何设置在命令行中使用#define?

Answer 1:

罗杰,

你所寻找的是通过命令行工具xcodebuild联编设置GCC_PREPROCESSOR_MACROS的方式。 对于xcodebuild联编的手册页显示了应用这些设置的格式,但是概要部分仅称此为“设置=价值......”

  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的工具栏的快速帮助Inspector是去寻找的地方。

  1. 访问项目的生成设置屏幕。
  2. 确保侧栏(Xcode中什么电话“实用工具”)是通过点击在Xcode的右上角旁边的组织者按钮“工具”按钮可见。
  3. 在实用工具栏,确保“快速帮助督察”是可见的。

另外,使用选项+命令+ 2直接显示快速帮助检查!

最后,你准备找您的构建设置:

  1. 无论是执行为构建设置要更改或通过构建设置列表中滚动搜索。
  2. 点击构建设置,您有兴趣,并观察快速帮助检查更新。
  3. 快速帮助督察的“宣言”部分显示要使用命令行构建设置名称。

在预处理宏的设置情况下,你最初询问,该设置是:

GCC_PREPROCESSOR_DEFINITIONS

这拉回到一起到你原来的问题,你可以简单地用你的xcodebuild联编命令的其余部分一起提供SETTING_NAME =“DESIRED_VALUE”设置这个版本在命令行上设置。 在一个快速小测试项目的情况下,我扔在一起,称为“TestApp”,我想预处理宏“BKM”设置为值1,我xcodebuild联编命令是:

xcodebuild联编-project TestApp.xcodeproj -scheme TestApp GCC_PREPROCESSOR_DEFINITIONS = '$ {继承} BKM = 1'

你为什么坚持$ {}继承在那里?

如果你正在使用预处理宏,那么你可能有一个以上的您正在使用。 其中一些你可能不希望在命令行改变,但仍然有编码到目标或项目的构建设置。 使用“$ {}继承”的指示xcodebuild联编也使用在较高的水平,而不是仅仅使用我们的xcodebuild联编命令中定义的定义生成设置。 在大多数情况下,你需要使用$ {}继承你已经设置任何其他配置的值来拉。

我必须包装在单引号的价值?

如果你想设置一个以上的值,然后是你需要的,如果你在命令行设置两个或更多的预处理宏以其他方式包裹在撇号值,第二+宏将被解释为一个构建,而不是设置一个预处理宏的...不太正确的行为。 撇号作为一种为设置收集多个值加在一起。 在我的样本xcodebuild联编命令的情况下,我想有xcodebuild联编使用继承一套预处理宏与我的具体设置BKM沿所以我包裹在撇号值告诉xcodebuild联编对待他们既作为预处理宏。

将与工作区太这项工作?

绝对! 只需修改命令来使用-workspace参数,而不是-project参数,你就可以在业务!



文章来源: Setting a #define from the command line in xcode 4.6