团结的好处/坏处build立?

从一家新公司开始,我注意到他们使用统一的cpp文件来解决我们的大部分问题,我想知道是否有人能够给我一个明确的理由,说明为什么以及如何加速构build过程? 我会认为在统一文件中编辑一个cpp文件将强制重新编译所有这些文件。

非常类似的问题和良好的答案在这里: #include所有.cpp文件到一个单一的编译单元?

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

另请参见上述问题中链接的统一魔法构build 。

李·温德尔在“统一build设 – 统一build设的邪恶”中发表了他的经验

他的结论是:

统一build设。 我不喜欢他们。

这是因为它节省了多余的工作。 冗余分析和编译依赖关系。 链接也复杂得多 – 您可以将导出全部放入一个对象(或几个对象)中,也可以是大部分目标对象文件的单独冗余导出。 更less的对象导致更less的I / O和更less的链接时间。 根据您的设置,包含可能是一个问题 – 在我使用的“统一构build”系统上,构build最终是CPU和/或内存绑定。