前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cmake: 使用jom实现msvc工程并发编译提高速度(-j)

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

作者头像
10km
发布2018-01-03 11:52:45
2.6K0
发布2018-01-03 11:52:45
举报
文章被收录于专栏:10km的专栏10km的专栏

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环境变量

代码语言:javascript
复制
set path=d:\caffe-static\tools\jom-1.1.2;%path%

生成jom的Makefile

代码语言:javascript
复制
gflags_source_folder>cmake  -G "NMake Makefiles JOM"  . 

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

代码语言:javascript
复制
gflags_source_folder>cmake  -G "NMake Makefiles JOM" -DCMAKE_MAKE_PROGRAM=d:\jom-1.1.2\jom.exe .

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

代码语言:javascript
复制
gflags_source_folder>jom -j 8

补记:

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年06月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取jom
  • cmake
  • 补记:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档