在Xcode 4.x中编译大型源文件(10k +行)

时间:2012-09-17 07:40:55

标签: ios xcode macos compilation clang

我有一些源文件,每行20,000行到120,000行。它们由简单(非常长)的函数组成,只是对C方法的一系列调用(在Apple的API中 - 例如Quartz),并且应该易于编译。

然而,Xcode需要花费数小时来编译它们,并且每当xcodeproj文件发生变化时,它就会重新编译(xcode bug?)。此外,无论如何,进行存档(上传到App Store)都会导致完全重新编译。

这些文件是愚蠢的 - 它们是代码生成工具的输出 - 我可能最终能够让它们变小 - 但肯定有办法使clang正常工作文件这个长度?

我尝试过的事情:

  1. 以32位模式运行 - 不可能:Apple现已删除此功能https://stackoverflow.com/a/9791396/153422
  2. 添加更多CPU /核心 - NEGLIGIBLE EFFECT:clang在大多数操作中都是单线程的
  3. 添加更多内存 - 可忽略不计的效果:8 GB RAM并不比2 GB内存明显好(毫不奇怪:它只有一个文件 - 它不太可能会耗尽内存!)
  4. 添加SSD驱动器 - SMALL EFFECT:CPU + SSD速度略慢的笔记本电脑比桌面速度略快(10%?),CPU +普通HD速度稍快
  5. 禁用SVG / GIT集成 - 无效:Apple的SVN实施非常错误,我们已将其关闭 - 适用于所有项目。
  6. 禁用OS X索引 - 小效果:Apple的Spotlight /后台索引在很多方面被打破。关闭它会使构建时间更快一些 - 但也许是因为它使Xcode更快。

2 个答案:

答案 0 :(得分:1)

可能的方法:

  • 使用pbxbuild
  • 将您的项目转换为使用makefile
  • 使用选项gmake(尝试使用n)
  • 调用-j [n]

优点:

  • 没有xcodeproj文件更改
  • 利用并行编译

答案 1 :(得分:0)

如果你正在生成很长的函数(数千行),你可能需要考虑将它们分成多个较小的函数。

您也可以尝试将优化级别设置为-O0或-O1。

另外,请在http://bugreporter.apple.com提交报告。