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