Xcode方案构建目标中的构建顺序

10
为了构建我的程序的安装程序,我添加了一个名为“installer”的Xcode项目/目标,它会将所有所需的二进制文件复制到临时位置,然后运行必要的逻辑来构建包。
我的问题在于,我希望将此安装程序项目直接与其他几个项目相关联,以便每次尝试构建安装程序项目时都会构建它们(如果需要)。
我将所有目标添加到安装程序的构建目标列表中(在模式中),它们按以下顺序排列:
Project A
Project B
Project C
Installer (self)

然而,当我进行一次干净的构建时,在构建日志中看到的构建顺序是这样的:

Project C
Installer
Project A
Project B

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

3个回答

11
Xcode允许你在UI中更改这些项的顺序,但该顺序似乎没有意义。在我的情况下,在Scheme“Build”选项卡中勾选“Parallelize Build”时会发生这种情况。禁用此复选框后,Xcode始终按照我选择的目标顺序执行。如果你想让它们按照严格的顺序进行,那么禁用并行选项也是有道理的。因为启用“Parallelize Build”后,所有没有依赖关系约束的目标都将并行构建,这可能会导致它们完成顺序不一致。另一方面,如果你希望它们按照顺序严格执行,那么禁用并行化构建也是符合要求的。

1
在我看来,这种方法比上面那种更加简洁。有点让人烦恼的是它藏在方案中,而不是直接出现在依赖列表本身上,这样你就可以“显然”地改变顺序了。 - david van brink
2
方案中的顺序在Xcode 11中似乎不再被遵循,即使并行构建未被选中。 - Adam Johns

5
将A、B和C目标作为安装程序目标的依赖项,这将确保在安装程序之前先构建A、B和C。从项目导航器中选择您的项目文件以打开项目编辑器。从目标列表中选择安装程序目标。单击编辑器顶部的“Build Phases”按钮以显示目标的构建阶段。单击“Target Dependencies”构建阶段旁边的披露三角形。单击“+”按钮以添加依赖项。
当您添加目标依赖项时,A、B和C目标将在安装程序之前构建。如果您需要按特定顺序构建A、B和C,则必须添加更多目标依赖项。

我认为这也是正确的方法,但是无法使目标依赖项工作。当我点击“+”按钮时,会出现“无可用项目”的消息,如果我尝试从一个项目中将其中一个.app产品拖放到该空间中,什么也不会发生。这可能是因为我将我的“安装程序”创建为一个空项目,但由于它本身没有代码(只是脚本),我不想从可执行示例项目开始。如果您可以告诉我如何将项目添加到“无可用项目”列表中,我将不胜感激! - Locksleyu
目标依赖关系不跨项目。您必须将A、B和C的目标添加到安装程序项目中,才能使用目标依赖关系。在您的情况下,拥有一个具有4个目标的项目比拥有4个单独的项目更好。 - Swift Dev Journal

2
在Xcode 13中,手动排序现在被强烈建议不使用,并会收到警告。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接