可以使用哪些技术来加速C++编译时间?
这个问题出现在Stack Overflow问题C++编程风格的一些评论中,我很想知道它有什么想法.
我见过一个相关的问题,为什么C++编译需要这么长时间?,但这并没有提供很多解决方案.
快速提问:什么是编译器标志,允许g ++生成自身的多个实例,以便更快地编译大型项目(例如,一次为多核CPU提供4个源文件)?
非常感谢.
由于它的强大功能,C++模板在我的日常工作中一直是一种祝福.但是人们不能忽视大量使用模板(hello元编程和Boost库)导致的(非常非常非常长的)编译时间.我已经阅读并尝试了很多可能性来手动重新组织和修改模板代码,以使其尽可能快地编译.
现在我想知道是否有任何c ++编译器试图最小化解释模板类所需的时间.我可能错了,但我觉得我知道的编译器只在他们以前的版本中添加了模板解释.
我的问题是:
我最近遇到了几个关于改善CMake启用C++项目周转时间的具体方面的问题(比如"我应该在什么级别分配我的构建过程?"或"cmake rebuild_cache 只是一个子目录?"),我是想知道是否有更一般的指导利用CMake提供的特定可能性.如果可能没有跨平台编译时优化,我主要对Visual Studio或基于GNU toochain的方法感兴趣.
我已经意识到并投资了一般推荐的领域来加速C++构建:
更改/优化/微调工具链
优化您的代码库/软件架构(例如,通过减少依赖关系并使用明确定义的子项目 - 单元测试)
投资更好的硬件(SSD,CPU,内存)
喜欢在这里,这里或这里推荐.所以我在这个问题上的重点是第一点.
另外我知道在CMake的Wiki中可以找到的建议:
前者只处理基础(并行make),后者主要处理如何加速解析CMake文件.
为了使这更具体一点,如果我从这里使用MSYS/GNU的100个库获取我的CMake示例,我得到了以下time测量结果:
$ cmake --version
cmake version 3.5.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ time -p cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
-- Configuring done
-- Generating done
-- Build files have been written to: [...]
real 27.03
user …Run Code Online (Sandbox Code Playgroud) c++ ×3
cmake ×1
compilation ×1
g++ ×1
gnu-make ×1
makefile ×1
multicore ×1
nmake ×1
performance ×1
templates ×1