如何使Xcode在依赖关系之前运行脚本?

19

场景:

我有一个名为TargetA的iOS应用程序,该应用程序使用由TargetB编译的静态库。显然,TargetBTargetA的依赖项,并且总是在TargetA之前构建TargetB

现在,我想要一个脚本在构建TargetA之后立即运行,但是甚至在TargetB之前也要运行。

我尝试了:

  1. 添加"setup"聚合/外部构建目标,并使其成为TargetA的依赖项。它基本奏效:Xcode同时运行setupTargetB,因此TargetB可能会过早地被构建。不够好。
  2. 相同的方法,但在方案中指定不并行构建。这个方法可以工作,但是是一个浪费,因为还有其他可以并行构建的目标。
  3. 在方案中的pre-action构建步骤中运行脚本。这个方法可以工作,但似乎不正确(为什么?该步骤的输出不会进入构建日志;因此,我可能不应该以这种方式使用它?)。

我不想做的事情:

将脚本添加为TargetB的依赖项。这个方法可以工作;但是,TargetB实际上来自另一个子项目,在构建它的上下文中,脚本的参数尚未知道(主要是TargetA项目的根目录)。

我是否漏掉了什么,还是必须接受上述#2或#3?

编辑: 在上述第二个选项中,更改依赖项的顺序(在我的情况下,在SetupTargetB之间的顺序)没有帮助——Xcode仍然会任意选择顺序。

1个回答

15

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


这确实帮了我很多,查看完整设置请访问:https://dev59.com/lF0b5IYBdhLWcg3wOvCd#29515958 - dogsgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接