目录
XCode 大家都很熟了, 由于苹果自己深度定制, 外加 LLVM 的大力支持, 在调试方面和编译速度方面简直好用, 其它各种 IDE 特性和功能也都一应俱全
不过, 这货的工程文件简直是不能忍, 稍微大一点的项目, 工程文件分分钟就几MB 大了, 而且最奇葩的是, 删除一个源码目录再添加回来, 会导致整个工程文件变化, 非常不利于版本控制, 添加新代码文件也非常麻烦, 必须手动添加
忍受了许久之后终于还是忍不住了, 操起 Google 发现了以下几种做法
XcodeEditor
项目地址: https://github.com/appsquickly/XcodeEditor
没怎么仔细研究, 不过似乎是得自行折腾编译一个命令行程序, 来修改 XCode 工程文件, 不过照说明来看应该是无法解决版本控制问题和文件巨大问题
xUnique
项目地址: https://github.com/truebit/xUnique
很实用的工具, 原理是将原始文件按固定规则分配 hash, 然后重新排列, 所以能解决版本控制的问题, 但是无法解决工程文件过于庞大的问题
Unity Builds
这个在 C艹 的世界里不少见, 主要是用来做编译速度优化之类的事情, 没想到这里可以用来解决 XCode 要手动添加文件的问题
具体做法如下:
-
准备脚本文件, 脚本内容参照 unity_build.sh
原理是, 查找所有 cpp 文件, 然后全部
#include
到一个 cpp 文件中 -
在项目 Target 的 Build Phases 里面添加一个 Run Script Phase, 并移动到 Compile Sources 之前
-
上述 Run Script Phase 里面的内容为
unity_build.sh "合并文件.mm" "源码目录1" "源码目录2" ...
这样就会自动把你指定的源码目录里面所有
c/cxx/cpp/m/mm
文件 import 到指定的 mm 文件中了 -
把生成的 mm 文件拖进工程中
说明:
-
这么做也有明显的缺点, 任意一个文件变化后会导致整个项目重新编译
所以, 可以按目录来多分几个文件, 添加方法不变
-
为了尽量减少重新编译的时间, 合并文件并没有每次重新生成, 而是用文件比较的方式来比较文件列表是否发生了变化
转载请注明来自: http://zsaber.com/blog/p/82
既然都来了, 有啥想法顺便留个言呗? (无奈小广告太多, 需审核, 见谅)