场景:
我有一个名为TargetA
的iOS应用程序,该应用程序使用由TargetB
编译的静态库。显然,TargetB
是TargetA
的依赖项,并且总是在TargetA
之前构建TargetB
。
现在,我想要一个脚本在构建TargetA
之后立即运行,但是甚至在TargetB
之前也要运行。
我尝试了:
- 添加"setup"聚合/外部构建目标,并使其成为
TargetA
的依赖项。它基本奏效:Xcode同时运行setup
和TargetB
,因此TargetB
可能会过早地被构建。不够好。 - 相同的方法,但在方案中指定不并行构建。这个方法可以工作,但是是一个浪费,因为还有其他可以并行构建的目标。
- 在方案中的
pre-action
构建步骤中运行脚本。这个方法可以工作,但似乎不正确(为什么?该步骤的输出不会进入构建日志;因此,我可能不应该以这种方式使用它?)。
我不想做的事情:
将脚本添加为TargetB
的依赖项。这个方法可以工作;但是,TargetB
实际上来自另一个子项目,在构建它的上下文中,脚本的参数尚未知道(主要是TargetA
项目的根目录)。
我是否漏掉了什么,还是必须接受上述#2或#3?
编辑: 在上述第二个选项中,更改依赖项的顺序(在我的情况下,在Setup
和TargetB
之间的顺序)没有帮助——Xcode仍然会任意选择顺序。