C++ CMake/JOM未并行构建
过去一直有效的东西现在对我不起作用了。我一直能够使用Qt Creator、Jom和Visual Studio 14(2015)编译器的组合并行构建 我使用NMake makefile生成,但将CMAKE_MAKE_程序设置为jom。我不使用CMake提供的生成器“NMake Makefiles JOM”,因为Qt Creator似乎无法解析输出,也就是说,我没有显示项目层次结构。但我相信我现在这样做的方式在过去对我很有效,但现在它只为我按顺序编译 我修改了QtC中的默认构建步骤C++ CMake/JOM未并行构建,c++,cmake,qt-creator,C++,Cmake,Qt Creator,过去一直有效的东西现在对我不起作用了。我一直能够使用Qt Creator、Jom和Visual Studio 14(2015)编译器的组合并行构建 我使用NMake makefile生成,但将CMAKE_MAKE_程序设置为jom。我不使用CMake提供的生成器“NMake Makefiles JOM”,因为Qt Creator似乎无法解析输出,也就是说,我没有显示项目层次结构。但我相信我现在这样做的方式在过去对我很有效,但现在它只为我按顺序编译 我修改了QtC中的默认构建步骤 cmake --
cmake --build . --target all
到
为了将-j8传递给jom
我注意到两件事:
生成的Makefile在顶部附近有.NOTPARALLEL
我相信这会在JOM启动时产生输出
jom: parallel job execution disabled for Makefile
然而,当我手动注释掉.NOTPARALLEL时,我仍然得到了顺序编译
你知道这里发生了什么吗?
对于CXX_标志,我使用的是/MP标志,而不是/Gm标志-我知道它们是不兼容的
编辑:Windows 10上的Qt Creator 4.5版和CMake 3.6.1版。构建是平铺的,大约占总可用CPU的25%——因此我误认为构建是按顺序进行的。实际问题与硬件有关。某些事件触发了CPU时钟的硬件级别限制(停留在0.78GHz)。将my Dell Precision 5510的电池拔出15秒,然后重新连接,就成功了。举一个简单的例子,说明您的问题可能会有所帮助。是否更新了导致此更改的工具?我意识到这是一个糟糕的堆栈溢出问题。我有另一台配置了Qt和CMake的PC,发现了一个完全不相关的项目,它在一台机器上并行构建,但不是正在讨论的那台。我将寻找差异并将其发布在这里,希望在将来帮助那些拥有相同配置的人。作为参考,我用于比较的项目是一个名为QWar的小程序,我以我的名字放在Github上。我感兴趣的是,在第二台并行工作的机器上,Makefile仍然有.NOTPARALLEL。我发现CPU时钟速度停留在0.78 GHz,这使得它看起来像是在可用CPU使用率的25%左右的水平线。这就是为什么它看起来只使用了一个核心。你很幸运。我有同样的问题,但在我的电脑(非常强大)。我有一个想法,这取决于项目中有多少实际文件,但我不确定。
jom: parallel job execution disabled for Makefile