cmake: 使用jom实现msvc工程并发编译提高速度(-j)

msvc提供的nmake并没有并发编译功能(类似gcc make的-j参数指定并发编译的任务数),
而第三方工具jom(http://wiki.qt.io/Jom)解决了这个问题,jom可以像gcc 的make一样 通过-j参数指定并发编译,让cpu全速运行,可以大大提高编译速度,节省大型项目的编译时间。
cmake也支持jom编译,cmake 有一个名为”NMake Makefiles JOM”的CMake Generator就是用来生成jom格式的Makefile.下面以编译gflags为例说明jom编译的使用方法

获取jom

访问jom官网(http://wiki.qt.io/Jom)下载jom 的二进制压缩包解压到本地的文件夹,jom就算是安装好了(jom很小,只有5个文件)

cmake

将jom所在文件夹加到PATH环境变量

set path=d:\caffe-static\tools\jom-1.1.2;%path%

生成jom的Makefile

gflags_source_folder>cmake  -G "NMake Makefiles JOM"  . 

如果不把jom的路径加到%PATH%中,也可以如下通过 定义CMAKE_MAKE_PROGRAM变量来指定jom.exe的位置

gflags_source_folder>cmake  -G "NMake Makefiles JOM" -DCMAKE_MAKE_PROGRAM=d:\jom-1.1.2\jom.exe .

然后就可以如下使用jom编译了, -j参数用于指定并发任务数

gflags_source_folder>jom -j 8

补记:

其实MSVC提供的MSBuild.exe和devenv.exe,也提供了并发编译功能,只是参数调用不同,稍显复杂。
以下是MSBuild的maxcpucount参数说明:

/maxcpucount[:n]  指定用于生成的最大
          并发进程数。如果未使用开关,则使用的默认值
          为 1。如果使用开关时不带值,
          MSBuild 将最多使用计算机上的
          处理器数。(缩写: /m[:n])

devenv.exe 默认就是并发编译的

你可能感兴趣的:(开发工具,cmake,CMake进阶)