【问题标题】:how to make xcode run a script before dependencies?如何让 xcode 在依赖项之前运行脚本?
【发布时间】:2012-10-31 16:56:45
【问题描述】:

场景:

我有TargetA,这是一个 iOS 应用程序。这个应用程序使用一个静态库,由TargetB 编译。 显然,TargetBTargetA 的依赖,而TargetB 总是在TargetA 之前构建。到目前为止一切顺利。

现在,我想要一个运行TargetA 的脚本,但甚至在TargetB 之前

我尝试了什么:

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

我不想做的事:

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

我是否遗漏了什么,或者我必须满足于上面的#2 或#3?

编辑: 在上面的选项 #2 中,更改依赖项的顺序(在我的情况下,在 SetupTargetB 之间没有帮助 - Xcode 仍然任意选择顺序。 p>

【问题讨论】:

    标签: ios xcode build


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2017-06-16
    • 2020-11-17
    • 2010-10-05
    • 2015-04-09
    • 2019-10-02
    • 2014-06-20
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多