编译前Xcode 4自定义构建步骤

时间:2011-12-10 16:31:33

标签: xcode build-rules

我正在尝试将工具集成到Xcode 4中,Xcode 4从描述符文件生成C头。在Xcode 3中,它为具有特定扩展名的文件添加了自定义构建步骤。然后在包含它们的.m / .mm / .cpp文件之前编译这些文件。当我尝试使用Xcode 4执行此操作时,它似乎在编译其他源之后运行我的自定义步骤。这当然不起作用。有没有办法告诉Xcode以前的步骤?

这是一个简单的repro设置:

enter image description here

我的main.m包含:

#include <mytest.h>

我已将${DERIVED_FILE_DIR}添加到标题搜索路径中。当我编译这个项目时,我得到以下内容:

enter image description here

如果我删除了include并再次构建它,我得到了:

enter image description here

因此规则确实有效,但执行得太晚了。有没有办法改变这种行为?

3 个答案:

答案 0 :(得分:7)

我已经拥有了我的复兴徽章,但这里有:)

我刚遇到这个问题,答案很简单(现在我已经花了半天的时间盯着它)。

构建规则响应源文件(.abc),并且源文件按照“编译源”构建步骤中列出的顺序进行处理。只需进入构建规则并将.abc拖到列表顶部即可。

我希望,向我的考古学家徽章迈出一小步。

答案 1 :(得分:3)

而不是添加构建规则:在Build Phases选项卡中,使用Add Build Phase按钮,选择Add Run Script。将添加一个运行脚本阶段,您可以在其中实现脚本要求。可以将新的运行脚本阶段拖到编译源阶段之前,这是您希望执行功能的时间。

答案 2 :(得分:0)

您需要在生成的文件和目标之间添加显式依赖关系。

在Finder中打开DerivedData目录,选择mytest.h文件并将其拖放到项目内的XCode中。我通常会创建一个名为“派生文件”的新组,并将此类文件放在其下。

为了轻松找到DerivedData目录,我更改项目设置,使目标项目相对(参见文件 - &gt;项目设置,构建选项卡)。

在项目中引用文件后,您需要将其添加到主目标Compile Sources规则。选择项目的主目标,展开编译源(如果尚未展开),并将新添加的派生文件拖放到文件列表中进行编译。

最后,由于您确实要编译此文件,因此您可能希望将其重命名为.m或.c,而不是.h。

更新:实际上看起来上面并不是一直都在运作。最可靠的方法是使用构建阶段而不是构建规则。