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

时间:2014-12-09 17:38:51

标签: xcode xcode6.1

是否可以在Xcode 6.1中配置目标的构建阶段,以便在编译源阶段之前可以发生复制文件阶段?

4 个答案:

答案 0 :(得分:10)

据我所知,没有办法在Xcode中使用GUI重新排序项目。您可以通过编辑project.pbxproj文件来完成此操作。

如果您在某个文本编辑器(而不是Xcode)中打开该文件并搜索类似

的内容
  

构建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 :(得分:7)

对于现有阶段,例如"复制"和"编译"在你的例子中:

  • 通过选择所需项目的目标
  • 中的Build Phases选项卡来查看Build Phases
  • 然后通过使用鼠标拖动来重新排序阶段(或每个阶段的元素)

注意:"目标依赖关系"阶段可能不会被重新排序(在撰写本文时)。

答案 2 :(得分:4)

在Xcode中,您可以重新排序GUI中的构建阶段(XCode 6.4和7.1 beta),但有时会以某种方式阻止UI。请尝试以下步骤以取消阻止用户界面:

  1. 点击构建规则,
  2. 点击Build Phases,
  3. 一次一步地移动所需的阶段。

答案 3 :(得分:0)

使用XCode 7.1.1(也许存在于XCode 7中)来解决这个问题。我无法将最近添加的Run Scripts拖到任何地方,但发现我可以将现有的项目拖到底部。所以,如果我的项目是

A
B
C
D (New runscript)

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

A
C
D
B

然后将C拖到底部

A
D
B
C

希望能有所帮助。