3

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

但是,Xcode 需要数小时来编译它们,并且每次 xcodeproj 文件更改时(xcode 错误?)似乎都会强制重新编译。此外,执行存档(用于上传到 App Store)无论如何都会导致完全重新编译。

这些文件太长了——它们是代码生成工具的输出——我最终可能会让它们更小——但肯定有办法让 clang 在这种长度的文件上正常工作吗?

我尝试过的事情:

  1. 在 32 位模式下运行 - 不可能:Apple 现在已删除此功能https://stackoverflow.com/a/9791396/153422
  2. 添加更多 CPU / 内核 - 可忽略的影响:clang 在大多数操作中是单线程的
  3. 添加更多 RAM - 影响可忽略:8 GB RAM 并不明显优于 2 GB RAM(不足为奇:它只是一个文件 - 不太可能会用完大量内存!)
  4. 添加 SSD 驱动器 - 小影响:CPU + SSD 稍慢的笔记本电脑的编译速度比 CPU + 普通 HD 稍快的台式机稍快(10%?)
  5. 禁用 SVG/GIT 集成 - 没有效果:Apple 的 SVN 实现非常有问题,我们已经将其关闭 - 对于所有项目。
  6. 禁用 OS X 索引 - 小影响:Apple 的 Spotlight / 背景索引在很多方面都被破坏了。关闭它会使构建时间更快一些 - 但可能是因为它通常会使 Xcode 更快。
4

2 回答 2

1

可能的方法:

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

优点:

  • 没有 xcodeproj 文件更改
  • 并行编译的使用
于 2012-09-17T08:02:57.827 回答
0

如果您要生成非常长的函数(数千行),您可能需要考虑将它们拆分为多个较小的函数。

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

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

于 2012-09-18T07:43:53.107 回答