最近我遇到了一些关于改善使用CMake的C ++项目周转时间的具体方面的stackoverflow问题(例如“在什么级别上应该分发我的构建过程?”或“cmake重建缓存是否只适用于子目录?”),我想知道是否有更一般的指导,利用CMake提供的特定可能性。如果可能没有跨平台编译时间优化,我主要对基于Visual Studio或GNU toochain的方法感兴趣。
而且我已经了解并投资于通常推荐的加速C ++构建的领域:
更改/优化/微调工具链
优化代码库/软件架构(例如通过减少依赖项和使用明确定义的子项目-单元测试)
投资更好的硬件(SSD,CPU,内存)
此外,我知道可以在CMake的Wiki中找到建议:
前者只处理基础知识(并行制作),后者主要处理如何加速解析CMake文件。
为了使这更具体些,如果我以这里的CMake示例为例,使用100个库使用MSYS/GNU,我得到了以下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 0.01
sys 0.03
$ time -p make -j8
...
[100%] Built target CMakeTest
real 113.11
user 8.82
sys 33.08
所以我总共有大约140秒的时间,我的目标——针对这个非常简单的例子——是将它缩短到使用标准设置/工具时的10-20%左右。