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

标签 ios xcode macos compilation clang

我有一些源文件,每个文件的长度从 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 更快。

最佳答案

可能的方法:

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

优点:

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

关于ios - 在 Xcode 4.x 中编译大型源文件(10k+ 行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12454971/

相关文章:

ios - 在默认选中一个单元格的单元格之间切换复选标记

ios - UINavigationController 不推送 View Controller

iphone - 委托(delegate)上设置的事件

xcode - 在 XCode 中设置全局 #define

objective-c - 如何释放CGColorRef?

ios - Xcode 9 在每周限制之前停止签名方式

macos - 如何删除 NSProgressIndicator 周围的白色方 block ?

ios - 将动画添加到 collectionview 单元格内的按钮

javascript - 除了 UI/UX 之外,Mac Safari 和 Windows Safari 有什么区别吗?

ios - 关于 iOS 开发的自动完成功能有什么想法吗?