2012-09-17 29 views
3

我有一些源文件,范围从20,000行到120,000行不等。它们由简单(非常长)的函数构成,只是对C方法(在Apple的API中 - 例如Quartz中)的一系列调用,并且应该易于编译。在Xcode 4.x中编译大型源文件(10k +行)

但是,Xcode需要几个小时才能编译它们,并且每次xcodeproj文件更改时都会强制重新编译(xcode bug?)。另外,做档案(上传到App Store)会导致完整的重新编译。

这些文件是愚蠢之久的 - 他们是一个代码生成工具的输出 - 我可以最终能够让他们更小 - 但肯定有办法让铛正常工作的文件这个长度?

事情我已经尝试:

  1. 在32位模式运行 - 不可能的:苹果公司已经取消了这一功能https://stackoverflow.com/a/9791396/153422
  2. 添加更多的CPU /核心 - 不可忽视的作用:铛是单线程的大多数操作
  3. 添加更多RAM - NEGLIGIBLE EFFECT:8 GB RAM并不明显优于2 GB RAM(没有意外:它只有一个文件 - 不太可能会用尽内存!)
  4. 添加SSD驱动器 - 小效果:CPU + SS稍慢的笔记本电脑D的编译速度稍快(10%?),比CPU稍微快一点的CPU +普通HD
  5. 禁用SVG/GIT集成 - 没有作用:苹果SVN的实现太麻烦了,我们已经关闭了它 - 对于所有项目。
  6. 禁用OS X索引 - 小效果:Apple的Spotlight /后台索引在很多方面都被打破。关闭它会使编译时间更快一些 - 但也许是因为它使Xcode的速度更快。
+0

pt.3)大型编译可以是内存绑定。内存耗尽肯定会让您的构建变慢。我见过构建会消耗几GB的内存。而其他阶段可能会消耗大量内存,这取决于您的文件和构建设置(例如,链接) – justin

+0

对不起,我不确定你的意思 - 正如我所说的,添加RAM在这里没有效果 – Adam

+0

你在代码生成工具中尝试过不同的设置吗? – orkoden

回答

1

可能的方法:

  • 转换项目使用pbxbuild
  • 呼叫gmake与选项-j [n](试了好N)

优势使用生成文件:

  • 没有xcodeproj文件更改paralle的
  • 利用编译
+0

我是否认为GNUstep不支持Xcode所针对的两个Apple平台(OS X和iOS)? - “GNUstep目前支持Unix(GNU/Linux和GNU/HURD,Solaris,NetBSD,OpenBSD,FreeBSD,Darwin)和Windows。”我不认为在问题中包含OS标签 - 对不起! - 但我现在重新签了字。 – Adam

0

如果你真的产生长期的功能(千排长队的),你可能要考虑他们分裂成多个更小的功能。

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

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

+0

将它们放入静态库,然后将主项目设置为-O0会有很大帮助。 -O最快+最小杀死xcode残忍:( – Adam