团结的利弊是什么?

Sto*_*lly 32 c++ build-process compilation

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

ake*_*ent 31

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

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

另请参阅上述问题中链接的Unity of Unity Build.

  • 如果一个文件发生更改,任何正常的构建系统都会注意到已更改的依赖项并重新编译该批次.您可以使用像优秀的ccache这样的编译器缓存来缓解部分时间 - 请参阅http://ccache.samba.org/ (2认同)

mlo*_*kot 10

Lee Winder发表了他的Unity Builds - Unity Builds 的邪恶经历

他的结论是:

Unity构建.我不喜欢他们.

  • @glauxosdever现在可以找到链接[这里](https://engineering.leewinder.co.uk/the-evils-of-unity-builds-2dbb07c3cae7#.8jn4cupf9),并存档[here](http:// web.archive.org/web/20140719090927/http://www.altdev.co/2011/08/14/the-evils-of-unity-builds/)以防它再次出现故障. (3认同)