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 默认就是并发编译的