【发布时间】:2020-11-25 18:41:03
【问题描述】:
在更简单的语法之上,Go 声称它通过只导入一次依赖项在很大程度上实现了快速的编译速度:
Go 为所有文件导入一次依赖项,因此导入时间不会 随着项目规模呈指数增长。
如果你对你的设计很小心,是否有可能用 C++ 完成同样的事情?
说将所有包含添加到包含在所有文件中的单个包含文件(使用一次编译指示)?或者它会减慢很多,因为对任何标头的任何更改都会重新编译所有内容而不是增量?
我正在使用 LLVM。仍在构建项目。
【问题讨论】:
-
有一种名为“unity”或“amalgamated”或“jumbo”或“单一编译单元”(SCU) 的项目技术,它将所有
*.h和*.cpp文件包含在一个单一的超级中*.cpp文件,然后编译它。我的一位同事在他的项目中将其作为一个实验,它使编译时间加快了 4 倍。然而,他们没有采用它,因为匿名命名空间和代码的布局方式会产生影响。对于 C++20,有一个名为 modules 的新功能(并且令人兴奋!),它甚至更好。
标签: c++ compilation dependencies header-files