如何利用nmake的所有内核?

Phi*_*ent 44 c++ eclipse qt nmake multicore

我刚买了一台新的四核计算机,发现nmake只使用了1个进程.

我曾经使用过具有开关-j4的make来启动4个进程.什么是nmake等价物?

[编辑]根据以下信息,我可以在qmake项目文件中添加一个命令:

QMAKE_CXXFLAGS + =/MP

这对我有效.非常感谢.

Vio*_*ffe 44

告诉nmake使用所有核心的另一种通用的,非Qt相关的方法是将环境变量设置CL/MP:

set CL=/MP
nmake
Run Code Online (Sandbox Code Playgroud)

将使用所有CPU核心.

  • 我看的项目编译了几百个文件,但是每个文件都使用一个单独的cl命令,比如`cl a.cpp,cl b.cpp,cl c.cpp,...`所以我想指出它确实除非将构建系统重写为为每个cl命令提供多个文件,如`cl a.cpp b.cpp c.cpp ...`,否则似乎没有帮助nmake. (4认同)
  • 据我了解,这只有在使用相同命令编译多个文件时才有用. (2认同)
  • @dvo:多年来,“误导性提示”对我在许多不同的项目上都非常有用,尤其是那些我只想在不修改提供的项目文件的情况下构建和完成的项目。如果你发现了一个问题,如果你详细说明它以警告其他人,而不是仅仅抱怨“有些东西不起作用”,那会更有用。 (2认同)

Tol*_*kha 35

QT有这个http://qt.gitorious.org/qt-labs/jom的工具

  • 预编译的jom二进制文件在这里:ftp://ftp.qt.nokia.com/jom/ (7认同)
  • @jww:jom 是一个内置的 nmake 替代品,它不依赖于 Qt。 (2认同)

Aln*_*tak 21

根据MSDN,没有这样的选择nmake.

但是,您可以通过使用/MPVC++命令行编译器的选项并同时传递多个文件,使编译器并行构建多个文件:

> cl /MP a.cpp b.cpp c.cpp
Run Code Online (Sandbox Code Playgroud)

但请注意,大多数Makefile不会像这样调用编译器 - 它们通常会为每个单独的源文件单独调用编译器,这会阻止该/MP选项执行任何有用的操作.

  • 使用此标志的一种便捷方法是让cl.exe从"CL"环境变量中检索它.在系统属性中设置它或在命令行上键入它:"set CL =/MP" (15认同)

mlo*_*kot 7

CMake的2.8.1 RC1,为写这篇的时候它已经准备好尝试,确实带来了新的NMAKE发电机被称为NMAKE Makefile文件JOM,它与JOM特定的设置,这是在更换NMAKE的下降产生NMAKE.因此,它使用NMake为多处理启用建筑.


Mar*_*ett 6

Incredibuild声称能够在多个核心/多台机器上运行nmake构建.我没有任何经验.