团结的利弊是什么?

时间:2009-05-11 12:54:33

标签: c++ build-process compilation

从一家新公司开始,我注意到他们在我们的大多数解决方案中使用了统一cpp文件,我想知道是否有人能够给出一个明确的理由,说明为什么以及如何加速构建处理?我原以为在Unity文件中编辑一个cpp文件会强制重新编译它们。

3 个答案:

答案 0 :(得分:29)

非常相似的问题和好的答案:#include all .cpp files into a single compilation unit?

总结似乎是减少I / O开销是主要的好处。

另请参阅上述问题中链接的The Magic Of Unity Builds

答案 1 :(得分:8)

Lee Winder发表了他对Unity Builds的经验 - The Evils of Unity Builds

他的结论是:

  

Unity构建。我不喜欢他们。

答案 2 :(得分:2)

这是因为它节省了多余的工作。依赖项的冗余解析和编译。链接也要复杂得多 - 您要么将导出全部放在一个对象(或几个)中,要么在大多数目标的目标文件中进行单独的冗余导出。较少的对象导致较少的I / O和减少的链接时间。根据您的设置,包含可能是一个问题 - 在我使用的“统一构建”系统上,构建最终是CPU和/或内存限制。