CMake/JOM 不是并行构建
CMake/JOM not building in parallel
过去一直有效的东西现在对我不起作用。我一直能够使用 Qt Creator、Jom 和 Visual Studio 14(2015) 编译器的组合并行构建。
我使用 NMake Makefile 生成,但将 CMAKE_MAKE_PROGRAM 设置为 jom。我不使用 CMake 提供的生成器,"NMake Makefiles JOM" 因为 Qt Creator 似乎无法解析输出 - 即我没有显示项目层次结构。但我相信我现在这样做的方式在过去对我有用,但现在它只为我顺序编译。
我修改了QtC中默认的构建步骤
cmake --build . --target all
到
cmake --build . --target all -- -j8
为了将 -j8 传递给 jom。
我注意到两件事:
生成的 Makefile 在顶部附近有 .NOTPARALLEL
我相信这会在 JOM 启动时导致输出,
jom: parallel job execution disabled for Makefile
然而,当我手动注释掉 .NOTPARALLEL 时,我仍然得到顺序编译。
对这里发生的事情有什么想法吗?
对于 CXX_FLAGS,我使用 /MP 标志而不使用 /Gm 标志 - 我知道它们不兼容
编辑:Qt Creator 版本 4.5 和 CMake 3.6.1 Windows 10.
构建在 CPU 可用总数的 25% 左右持平 - 因此我误认为构建是按顺序进行的。 实际 问题与硬件有关。某些事件触发了 CPU 时钟的硬件级限制(停留在 0.78GHz)。将我的 Dell Precision 5510 的电池拔出 15 秒并重新连接就成功了。
过去一直有效的东西现在对我不起作用。我一直能够使用 Qt Creator、Jom 和 Visual Studio 14(2015) 编译器的组合并行构建。
我使用 NMake Makefile 生成,但将 CMAKE_MAKE_PROGRAM 设置为 jom。我不使用 CMake 提供的生成器,"NMake Makefiles JOM" 因为 Qt Creator 似乎无法解析输出 - 即我没有显示项目层次结构。但我相信我现在这样做的方式在过去对我有用,但现在它只为我顺序编译。
我修改了QtC中默认的构建步骤
cmake --build . --target all
到
cmake --build . --target all -- -j8
为了将 -j8 传递给 jom。
我注意到两件事: 生成的 Makefile 在顶部附近有 .NOTPARALLEL 我相信这会在 JOM 启动时导致输出,
jom: parallel job execution disabled for Makefile
然而,当我手动注释掉 .NOTPARALLEL 时,我仍然得到顺序编译。
对这里发生的事情有什么想法吗? 对于 CXX_FLAGS,我使用 /MP 标志而不使用 /Gm 标志 - 我知道它们不兼容
编辑:Qt Creator 版本 4.5 和 CMake 3.6.1 Windows 10.
构建在 CPU 可用总数的 25% 左右持平 - 因此我误认为构建是按顺序进行的。 实际 问题与硬件有关。某些事件触发了 CPU 时钟的硬件级限制(停留在 0.78GHz)。将我的 Dell Precision 5510 的电池拔出 15 秒并重新连接就成功了。