设想:

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

现在,我希望构建一个运行TargetA的脚本,但即使在TargetB 之前,也要创建

我试过的

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

  • 我不想做什么:

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

    我是否想念任何东西,还是必须满足以上#2或#3的要求?

    编辑:上面选项2中的,更改了依赖关系的顺序(在我的情况下,在SetupTargetB之间无济于事-Xcode仍然可以任意选择顺序。

    最佳答案

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

    09-27 23:16