从一家新公司开始,我注意到他们在我们的大多数解决方案中使用了统一cpp文件,我想知道是否有人能够给出一个明确的理由,说明为什么以及如何加速构建处理?我原以为在Unity文件中编辑一个cpp文件会强制重新编译它们。
答案 0 :(得分:29)
非常相似的问题和好的答案:#include all .cpp files into a single compilation unit?
总结似乎是减少I / O开销是主要的好处。
另请参阅上述问题中链接的The Magic Of Unity Builds。
答案 1 :(得分:8)
答案 2 :(得分:2)
这是因为它节省了多余的工作。依赖项的冗余解析和编译。链接也要复杂得多 - 您要么将导出全部放在一个对象(或几个)中,要么在大多数目标的目标文件中进行单独的冗余导出。较少的对象导致较少的I / O和减少的链接时间。根据您的设置,包含可能是一个问题 - 在我使用的“统一构建”系统上,构建最终是CPU和/或内存限制。