19

设想:

我有TargetA,这是一个 iOS 应用程序。这个应用程序使用一个静态库,由TargetB. 显然,TargetB是 的依赖项TargetA,并且TargetB总是在 之前构建TargetA。到现在为止还挺好。

现在,我希望TargetA构建一个运行脚本,但即使在TargetB.

我尝试了什么:

  1. 添加“设置”聚合/外部构建目标,并使其成为TargetA. 它成功了一半:Xcode 同时运行setupTargetB因此TargetB可能构建得太早。还不够好。
  2. 相同,但在方案中指定不要并行构建。这可行,但很浪费,因为还有其他可以并行构建的目标。
  3. pre-action在方案内的构建步骤中运行脚本。这可行,但似乎是错误的(为什么?该步骤的输出不会进入构建日志;所以也许我不打算以这种方式使用它?)。

我不想做的事情:

将脚本添加为TargetB. 这会奏效;但是,TargetB实际上来自另一个子项目,并且在构建它的上下文中,脚本的参数尚不清楚(主要是TargetA项目的根目录)。

我错过了什么,还是我必须满足于上面的#2 或#3?

编辑:在上面的选项 #2 中,更改依赖关系的顺序(在我的情况下,介于两者之间SetupTargetB没有帮助——Xcode 仍然任意选择顺序。

4

1 回答 1

14

运行脚本作为pre-action方案内的构建步骤是完成您想要的最佳方式。这种方法的一个常见用途是根据源代码控制状态(示例)调整项目的内部版本号。至于捕获脚本输出,不幸的是,您唯一能做的就是将脚本的标准输出重定向到日志文件。该日志文件可能是您项目的一部分,因此很容易从 Xcode 中查看。

于 2013-09-08T06:07:31.080 回答