Xcode目标的构建阶段顺序有多灵活?

10
在Xcode 6.1中,是否可以配置目标的构建阶段,使得复制文件阶段可以在编译源代码阶段之前发生?
4个回答

10
据我所知,在Xcode的图形用户界面中没有重新排序项目的方法。不过,你可以通过编辑project.pbxproj文件来实现该功能。
如果你在一个文本编辑器(而非Xcode)中打开该文件,并搜索类似于以下内容:

Build configuration list for PBXNativeTarget

你会找到类似于下面这样的一段代码。
/* Begin PBXNativeTarget section */
    9BDEC0D019881B9400AE439B /* MyProject */ = {
        isa = PBXNativeTarget;
        buildConfigurationList = 9BDEC0F019881B9400AE439B /* Build configuration list for PBXNativeTarget "MyProject" */;
        buildPhases = (
            6111D3671B56D2BB00DD7431 /* Show TODOs and FIXMEs as Warnings */,
            BAEE6F558B6BDB326F5B8D1F /* Check Pods Manifest.lock */,
            9BDEC0CD19881B9400AE439B /* Sources */,
            9BDEC0CE19881B9400AE439B /* Frameworks */,
            4C47C03A1ABD4DFE00D317B5 /* Copy baked database to bundle sqlite */,
            9BDEC0CF19881B9400AE439B /* Resources */,
            CDF5E3A80B5FDFCEA41B67FD /* Embed Pods Frameworks */,
            CF995761C5EAA8D1AAEBA463 /* Copy Pods Resources */,
        );
        buildRules = (
        );
        dependencies = (
            9B832FED19B76A45006D3347 /* PBXTargetDependency */,
        );
        name = MyProject;
        productName = MyProject;
        productReference = 9BDEC0D119881B9400AE439B /* MyProject.app */;
        productType = "com.apple.product-type.application";
    };

您可以更改buildPhases列表中的操作顺序。

看看我的列表中的第一件事是6111D3671B56D2BB00DD7431 /* Show TODOs and FIXMEs as Warnings */吗?那是我使用GUI添加的自定义构建阶段脚本,然后使用Atom将该行向上移动至第一行。重新打开GUI后,它是“目标依赖项”之后的第二个构建阶段(如其他答案中所述)。


1
就目前而言,很遗憾的是,在XCode 9.2中,“目标依赖项”阶段不会出现在此列表中。 - orion elenzil

7

是的。

对于您示例中的“复制”和“编译”等现有阶段:

  • 通过选择所需项目的目标并选择“Build Phases”选项卡来查看构建阶段
  • 然后,通过使用鼠标拖动它们来重新排列阶段(或每个阶段的元素)

注意:在撰写本文时,“Target Dependencies”阶段可能无法重新排序。


2
那对我不起作用。每次我尝试移动其中一个阶段,它立即弹回,参见https://www.dropbox.com/s/aj9eil6cxix0zsu/xcode_cordova_prepare.mov?dl=0 - Timo Ernst
2
我似乎只能将项目从中间拖到底部。因此,我必须将它们全部向下移动到底部,直到我想要插入的东西在正确的位置。 - jowie

4
在Xcode中,您可以在GUI中重新排序Build Phases(XCode 6.4和7.1 beta),但有时UI会被阻止。请按照以下步骤尝试解除UI的阻塞:
  1. 单击“构建规则”,
  2. 单击“构建阶段”,
  3. 逐步移动所需阶段。

你在重复@Justin的回答,是吗? - Drux
3
我是在提到Spencevail的陈述,即这些项目无法重新排序。Xcode存在已经存在很长时间(现在仍然存在)的一个错误,会阻止您移动行。但是,如果您来回切换选项卡,则可以规避此错误。 - thetrutz

0
遇到了XCode 7.1.1的问题(可能从XCode 7开始存在)。我无法将最近添加的运行脚本拖动到任何地方,但发现我可以将已有的项目拖到底部。因此,如果我的项目是:
A
B
C
D (New runscript)

我想把 D 放在 A 的下面,首先拖动 B 到底部

A
C
D
B

然后将C拖到底部

A
D
B
C

希望能对某人有所帮助。

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