【问题标题】:Compile large source files (10k+ lines) in Xcode 4.x在 Xcode 4.x 中编译大型源文件(10k+ 行)
【发布时间】:2012-09-09 09:59:20
【问题描述】:

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

【问题讨论】:

  • pt.3) 大型编译可能受内存限制。内存耗尽肯定会减慢您的构建速度。我已经看到构建消耗了几 GB 的内存。同样,其他阶段可能会消耗大量内存,具体取决于您的文件和构建设置(例如链接)
  • 对不起,我不确定你的意思——正如我所说,在这里添加 RAM 没有效果
  • 你有没有在代码生成工具中尝试过不同的设置?

标签: ios xcode macos compilation clang


【解决方案1】:

可能的方法:

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

优点:

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

【讨论】:

  • 我认为 GNUstep 不支持 Xcode 所针对的两个 Apple 平台(OS X 和 iOS)是否正确? - “GNUstep 目前支持 Unix(GNU/Linux 和 GNU/HURD、Solaris、NetBSD、OpenBSD、FreeBSD、Darwin)和 Windows。”。我不认为在问题中包含操作系统标签 - 抱歉! - 但我现在已经重新标记了。
【解决方案2】:

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

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

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

【讨论】:

  • 将它们放入静态库,然后将主项目设置为 -O0 有很大帮助。 -O 最快+最小 残忍地杀死xcode :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多