【发布时间】:2016-09-16 14:06:30
【问题描述】:
我最近遇到了几个关于改善启用 CMake 的 C++ 项目的周转时间的特定方面的 SO 问题(例如 "At what level should I distribute my build process?" 或 "cmake rebuild_cache for just a subdirectory?"),我想知道是否有更一般的指导来利用特定的可能性CMake 提供。如果可能没有跨平台编译时优化,我主要对基于 Visual Studio 或 GNU 工具链的方法感兴趣。
而且我已经了解并投资于通常推荐的领域以加速 C++ 构建:
更改/优化/微调工具链
优化您的代码库/软件架构(例如,通过减少依赖关系并使用明确定义的子项目 - 单元测试)
投资更好的硬件(SSD、CPU、内存)
喜欢推荐here、here 或here。所以我在这个问题上的重点是第一点。
另外我知道在 CMake 的 Wiki 中可以找到的建议:
前者只处理基础(并行制作),后者主要处理如何加速解析 CMake 文件。
为了更具体一点,如果我从here 获取我的 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%。
【问题讨论】:
标签: performance compilation cmake gnu-make nmake