【问题标题】:Build ordering in Xcode scheme build targetsXcode 方案构建目标中的构建顺序
【发布时间】:2012-04-23 18:15:19
【问题描述】:

为了为我的程序构建安装程序,我添加了一个“安装程序”Xcode 项目/目标,它将所有需要的二进制文件复制到一个临时位置,然后运行必要的逻辑来构建包。

我遇到的问题是我想将此安装程序项目直接映射到其他几个项目,以便每次尝试构建安装程序项目时都构建它们(如果需要)。

我将所有目标添加到安装程序的构建目标列表(在架构中),它们的顺序如下:

Project A
Project B
Project C
Installer (self)

但是,当我进行干净的构建时,我会看到一个构建顺序(在构建日志中),如下所示:

Project C
Installer
Project A
Project B

我需要强制执行特定的构建顺序,否则安装程序将无法使用这些文件。 Xcode 允许您在 UI 中更改这些项目的顺序,但该顺序似乎没有任何作用。有没有办法强制依赖的构建顺序?

【问题讨论】:

    标签: xcode installation dependencies project


    【解决方案1】:

    Xcode 允许您在 UI 中更改这些项目的顺序,但顺序 似乎什么也没做。

    就我而言,这是在方案“构建”选项卡中勾选“并行化构建”时发生的。

    禁用该复选框后,Xcode 始终遵循我为目标选择的顺序。

    想一想是有道理的:当启用“Parallelize Build”时,它们之间没有依赖约束的所有目标都将并行构建,这可能会导致它们的乱序完成。

    另一方面,如果你希望他们的 sequential 顺序被严格遵循,嗯.. 这与 parallel 构建完全相反,因此你应该禁用它选项。

    【讨论】:

    • IMO 这种方法比上述方法更干净。有点烦人的是它隐藏在方案中,而不是就在依赖列表本身,您可以显然更改顺序。谢谢!
    • Xcode 11 中似乎不再遵循方案中的顺序。即使未选中并行构建。
    【解决方案2】:

    使目标 A、B 和 C 成为安装程序目标的依赖项,这将确保 A、B 和 C 在安装程序之前构建。从项目导航器中选择您的项目文件以打开项目编辑器。从目标列表中选择安装程序目标。单击编辑器顶部的 Build Phases 按钮以显示目标的构建阶段。单击 Target Dependencies 构建阶段旁边的显示三角形。单击 + 按钮添加依赖项。

    当您添加目标依赖项时,目标 A、B 和 C 将在安装程序之前构建。如果需要按特定顺序构建 A、B 和 C,则必须添加更多目标依赖项。

    【讨论】:

    • 我认为这也是正确的方法,但无法使目标依赖项正常工作。当我单击“+”按钮时,我看到消息“没有可用的项目”,如果我尝试从其中一个项目中单击并拖动其中一个 .app 产品到该空间,则没有任何反应。这可能是因为我将我的“安装程序”创建为一个空项目,但由于它本身没有代码(只是脚本),我不想从一个可执行的示例项目开始。如果您能告诉我如何将项目添加到“没有可用的项目”列表中,我将不胜感激!
    • 目标依赖项不跨越项目。您必须将 A、B 和 C 的目标添加到安装程序的项目中,才能使用目标依赖项。在您的情况下,拥有一个具有 4 个目标的项目比拥有 4 个单独的项目效果更好。
    【解决方案3】:

    在 Xcode 13 中,现在强烈建议不要使用手动命令,并且会收到警告。

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 1970-01-01
      • 2014-08-01
      • 2020-12-03
      • 2015-02-07
      • 2013-12-24
      • 2021-05-03
      • 2020-03-05
      • 1970-01-01
      相关资源
      最近更新 更多