设想:
我有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仍然可以任意选择顺序。
最佳答案
在方案内部将脚本作为pre-action
构建步骤运行是实现所需目标的最佳方法。这种方法的常见用法是根据源代码控制状态(example)调整项目的内部版本号。不幸的是,就捕获脚本输出而言,唯一可以做的就是redirect stdout for the script to a log file。该日志文件可能是您项目的一部分,因此可以从Xcode轻松查看。