【发布时间】:2023-03-16 09:31:01
【问题描述】:
我发现如果有很多类,当我为每个类使用一个 *.h 和一个 *.cpp 文件时,编译时间会显着增加。我已经使用了预编译头文件和增量链接,但是编译时间仍然很长(是的,我使用 boost ;)
于是我想出了以下技巧:
- 将 *.cpp 文件定义为不可编译
- 将 *.cxx 文件定义为可编译
- 为每个应用程序添加了一个 *.cxx 文件 模块,并在其中#include了该模块的所有*.cpp文件。
因此,我最终只得到了 8 个翻译单元,而不是 100 多个翻译单元。编译时间缩短了 4-5 倍。
缺点是您必须手动包含所有 *.cpp 文件(但这并不是真正的维护噩梦,因为如果您忘记包含链接器会提醒您的内容),并且某些 VS IDE 便利性无法使用这个方案,例如转到/移至实施等。
所以问题是,拥有大量 cpp 翻译单元真的是唯一正确的方法吗?我的把戏是已知的模式,还是我遗漏了什么? 谢谢!
【问题讨论】:
标签: c++ performance build-process module header-files