Xcode:在一个文件和另一个文件之间创建依赖关系

时间:2013-11-27 12:09:08

标签: ios xcode build project build-rules

我们正在使用自定义编译器为项目编译一些资源。这些资源是基于文本的,并且具有.ink扩展名。我们正在为这些ink文件使用自定义构建规则。 (如果您对它们感兴趣,请参阅脚注!)

我们的墨迹编译器采用根ink文件,该文件可以包含include个其他ink文件的语句。因此,在Xcode项目中,我们只包含根ink文件,因此它不会尝试独立编译子ink文件。

但是,我们现在遇到的问题是,如果您更改其中一个子ink文件,Xcode就不知道要重新编译父文件。

我们可以做某种自定义构建脚本,如果修改了任何子代,它会自动触及根文件吗?或者我们可以设置某种依赖? (目前我们每次构建都会触及根文件,但随着项目的增长,这将变得太慢)

我们真的不想为了做到这一点而改变墨水编译器的工作方式!

P.S。如果您对这些墨水文件的内容感兴趣:它们是故事文件 - 我们为iOS开发基于文本的叙事游戏。

2 个答案:

答案 0 :(得分:0)

如果您在Xcode中选择项目并转到“构建阶段”,则可以将shell脚本添加到应用程序的构建过程中。也许这可能是检查墨迹文件是否需要重新编译的良好开端。

此处有更多信息:Running a Script While Building a Product

答案 1 :(得分:0)

我最终创建了一个自定义makefile,然后创建了一个“运行脚本”构建阶段,该阶段在保存make文件的目录中调用了ink

我对makefile没有太多了解,但这是我根据在线教程拼凑的内容:

ALL_CHILD_INK = subdir/*.ink
FINAL_FILENAME = root_filename

$(FINAL_FILENAME).json: $(FINAL_FILENAME).ink $(ALL_CHILD_INK)
    ink_compiler $< $@

本质上,它是一个简单的makefile,可确保所有子文件都是主根文件的依赖项。