如何使xcode在依赖之前运行脚本?

时间:2012-11-12 09:04:24

标签: ios xcode build

场景:

我有TargetA,这是一个iOS应用程序。此应用程序使用由TargetB编译的静态库。 显然,TargetBTargetA的依赖关系,而TargetB始终在TargetA之前构建。到目前为止一切都很好。

现在,我希望构建一个运行TargetA的脚本,但甚至在TargetB 之前。

我尝试了什么:

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

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

    我错过了什么,或者我是否必须满足于#2或#3?

    上面的选项#2中的

    编辑:,更改依赖项的顺序(在我的情况下,SetupTargetB之间没有帮助 - Xcode仍然选择订单任意。

1 个答案:

答案 0 :(得分:9)

在方案中运行脚本作为pre-action构建步骤是实现所需目标的最佳方法。这种方法的一个常见用途是根据源控制状态(example)调整项目的构建号。至于捕获脚本输出,不幸的是,你唯一能做的就是redirect stdout for the script to a log file。该日志文件可能是您项目的一部分,因此从Xcode可以轻松查看。