如何使用QTCreator中的mingw在多个核心上进行编译

Ste*_*eng 22 qt qt-creator mingw32

我的Windows桌面上有一个四核i7 CPU.我试图让mingw32-make使用尽可能多的内核进行编译.我已将-j8添加到Build Settings-> Build Steps下的"Make Arguments"字段中.mingw32-make似乎完全忽略了该选项,因为我没有从中获得任何速度提升.当我查看任务管理器中的CPU使用率时,它保持在13%,我只看到一个运行g ++的实例.

现在,使用mingw重建整个项目需要3分钟.使用MSVC重建它只需要15秒.

为了您的信息,我在项目设置中启用了预编译的标题选项.这也使VC的事情变得更快.但我仍然没有看到预编译头与mingw的好处.

如果你有从MTCreator并行编译多个源文件的话,请分享你的意见.谢谢!

小智 22

这就是我做的.

在Qt Creator的工具 - >选项菜单中,在"构建并运行"部分下有一个选项,显示"使用jom而不是nmake".我检查了那个盒子,但没有改变.所以相反,我去了项目的构建设置,在构建步骤类别下有一个"Make"项.展开详细信息,您将找到"覆盖mingw32-make.exe:"项.我在那里粘贴了"C:\ QtSDK\QtCreator\bin\jom.exe",突然间我正在构建多个核心.

在Qt Creator 2.4.1上为我工作.试试看.


Bre*_*nks 11

-j8 由于GN32 Make on Win32的限制,可能无法正常工作.

试着直接-j进入make arguments字段.这告诉Make生成尽可能多的编译进程 - 如果你有足够的RAM和CPU来处理它,它应该比单个编译快.

不幸的是,这些是唯一的两个选项(不修改Makefile):要么是-j1无限制的-j

完整详细信息:GNU Make on Win32不支持作业服务器,因此父Make进程无法跟踪任何sub-Make产生的编译进程数.为了安全起见,子Make只运行-j1.我相信qmake/Qt Creator生成的Makefile会使用多层Makefile.我首先使用Microchip的MPLAB X IDE了解了这个问题,请查看此主题以获取更多信息

这句话来自与GNU Make一起发布的README.W32

支持并行构建

此端口支持并行构建(-jN),有2个限制:

  • 由于此端口实现等待其子进程的方式,并发进程数的硬限制为64;

  • 不支持作业服务器方法(在Posix平台上运行Make时可用),这意味着您必须在递归Makefile中将显式-jN开关传递给子Make.如果sub-Make没有收到明确的-jN开关,它将默认为-j1,即sub-Make中没有并行性.