XCode 自动添加代码文件到项目

By | 2016-01-04

XCode 大家都很熟了, 由于苹果自己深度定制, 外加 LLVM 的大力支持, 在调试方面和编译速度方面简直好用, 其它各种 IDE 特性和功能也都一应俱全

不过, 这货的工程文件简直是不能忍, 稍微大一点的项目, 工程文件分分钟就几MB 大了, 而且最奇葩的是, 删除一个源码目录再添加回来, 会导致整个工程文件变化, 非常不利于版本控制, 添加新代码文件也非常麻烦, 必须手动添加

忍受了许久之后终于还是忍不住了, 操起 Google 发现了以下几种做法

XcodeEditor

项目地址: https://github.com/appsquickly/XcodeEditor

没怎么仔细研究, 不过似乎是得自行折腾编译一个命令行程序, 来修改 XCode 工程文件, 不过照说明来看应该是无法解决版本控制问题和文件巨大问题

xUnique

项目地址: https://github.com/truebit/xUnique

很实用的工具, 原理是将原始文件按固定规则分配 hash, 然后重新排列, 所以能解决版本控制的问题, 但是无法解决工程文件过于庞大的问题

Unity Builds

思路来自这里

这个在 C艹 的世界里不少见, 主要是用来做编译速度优化之类的事情, 没想到这里可以用来解决 XCode 要手动添加文件的问题

具体做法如下:

  1. 准备脚本文件, 脚本内容参照 unity_build.sh

    原理是, 查找所有 cpp 文件, 然后全部 #include 到一个 cpp 文件中

  2. 在项目 Target 的 Build Phases 里面添加一个 Run Script Phase, 并移动到 Compile Sources 之前

  3. 上述 Run Script Phase 里面的内容为

    unity_build.sh "合并文件.mm" "源码目录1" "源码目录2" ...

    这样就会自动把你指定的源码目录里面所有 c/cxx/cpp/m/mm 文件 import 到指定的 mm 文件中了

  4. 把生成的 mm 文件拖进工程中

说明:

  • 这么做也有明显的缺点, 任意一个文件变化后会导致整个项目重新编译

    所以, 可以按目录来多分几个文件, 添加方法不变

  • 为了尽量减少重新编译的时间, 合并文件并没有每次重新生成, 而是用文件比较的方式来比较文件列表是否发生了变化

转载请注明来自: http://zsaber.com/blog/p/82

既然都来了, 有啥想法顺便留个言呗? (无奈小广告太多, 需审核, 见谅)

Category: iOS

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注