CMake 和缓慢的 MSVC 编译

T4n*_*10r 9 cmake qt-creator visual-studio


CMake 为 MSVC 10 (2010) 生成项目,并且构建时间相对较短,即。在我单击给定项目的构建后,它会在几秒钟内开始编译,这是预期的。

配置 对于 Qt Creator,我选择CodeBlocks - NMake Makefiles作为 CMake 生成器,设置构建配置以使用与上面相同的目标。当我点击构建时,我看到
cmake --build . --target name
沉默了大约 2 分钟。然后
Scanning dependencies for ...
又默哀 1.5 分钟。更糟糕的是 - 后来的编译仅使用 1 个线程。所以编译时间……长得令人无法接受。

我应该如何配置项目以实现与 MSVC 下相当、较短的编译时间?我已经尝试过 Qt Creator 4.3 Beta 以及其他

小智 8

CMake 默认情况下不进行多处理器构建。所以由你来强迫它......

您可以/MP在使用 cmake 配置项目时指定该标志。

cmake -G "<MSVC-Generator>" -DCMAKE_CXX_FLAGS="/MP" <target_dir>

我对文件 CMakeLists.txt 本身中的所有 cmake 项目执行此操作,因此客户端不必:

if(MSVC)
 target_compile_options(<target> PRIVATE "/MP")
endif()
Run Code Online (Sandbox Code Playgroud)

  • 是的,你正确的。但是,为 NMake 生成的 Makefile 包含 .NOTPARALLEL,这会强制 nmake 和 jom 在慢速串行模式下工作。忍者构建系统有帮助。 (3认同)

T4n*_*10r 0

NMake 和 NMake JOM 速度很慢。当我更改为 Ninja 构建系统时 - 编译时间与 MSVC 内的编译时间相似。