场景:
我有TargetA
,这是一个iOS应用程序。此应用程序使用由TargetB
编译的静态库。
显然,TargetB
是TargetA
的依赖关系,而TargetB
始终在TargetA
之前构建。到目前为止一切都很好。
现在,我希望构建一个运行TargetA
的脚本,但甚至在TargetB
之前。
TargetA
的依赖项。它起作用了一半:Xcode同时运行setup
和TargetB
,因此TargetB
可能会很快建成。不够好。pre-action
构建步骤中运行脚本。这有效,但似乎错了(为什么?从该步骤的输出不会进入构建日志;所以也许我不打算以这种方式使用它?)。将脚本添加为TargetB
的依赖项。这会奏效;但是,TargetB
实际上来自另一个子项目,并且在构建它的上下文中,脚本的参数尚不清楚(主要是TargetA
项目的根目录)。
我错过了什么,或者我是否必须满足于#2或#3?
上面的选项#2中的 编辑:,更改依赖项的顺序(在我的情况下,Setup
和TargetB
之间没有帮助 - Xcode仍然选择订单任意。
答案 0 :(得分:9)
在方案中运行脚本作为pre-action
构建步骤是实现所需目标的最佳方法。这种方法的一个常见用途是根据源控制状态(example)调整项目的构建号。至于捕获脚本输出,不幸的是,你唯一能做的就是redirect stdout for the script to a log file。该日志文件可能是您项目的一部分,因此从Xcode可以轻松查看。