Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake/JOM未并行构建_C++_Cmake_Qt Creator - Fatal编程技术网

C++ CMake/JOM未并行构建

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 --

过去一直有效的东西现在对我不起作用了。我一直能够使用Qt Creator、Jom和Visual Studio 14(2015)编译器的组合并行构建

我使用NMake makefile生成,但将CMAKE_MAKE_程序设置为jom。我不使用CMake提供的生成器“NMake Makefiles JOM”,因为Qt Creator似乎无法解析输出,也就是说,我没有显示项目层次结构。但我相信我现在这样做的方式在过去对我很有效,但现在它只为我按顺序编译

我修改了QtC中的默认构建步骤

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