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: 使用jom实现msvc工程并发编译提高速度(-j)相关推荐

  1. cmake:解决MSVC下/MT 编译paho.mqtt.c的问题

    paho.mqtt.c是eclipse开发的C语言跨平台mqtt client 开源库,之前写过一篇博客<cmake:VS2015和GCC编译paho.mqtt C/C++ client> ...

  2. CMake设置MSVC工程MT/MTd/MD/MDd

    文章目录 0. 前言 1. 如何设置 1.1 CMakeLists代码 1.2 要点1:POLICY 1.3 要点2:set_property 0. 前言 在MSVC工程上右键->属性,找到配置 ...

  3. 流场可视化工程dlb-dynamicdr部署日志:阶段二:工程本地编译

    流场可视化工程dlb-dynamicdr部署日志:阶段二: 工程本地编译 2022-02-25 阶段一 阶段二:勘误 阶段三:为之前的库编译生成静态链接库 .a文件 Par_METIS重新生成 MET ...

  4. Eclipse——Maven项目工程无法编译但可以运行解决方案

    问题描述 Maven项目工程无法编译但可以运行. 只能运行上一次成功的版本. 问题分析 pom.xml文件错误. 解决方案 方案一:选中项目 --> 右键 --> Maven --> ...

  5. Android工程的编译过程

    现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的每一步都做了什么,需要 ...

  6. 乐鑫ESP32开发 1.Vscode创建新工程,编译,下载烧录,监视端口,点亮一个LED

    前言  Vscode安装ESP-IDF插件后,会在左下角生成一些按钮,用户可以点击实现配置.编译.下载.调试等功能.  但鉴于ESP-IDF的Vscode插件体验不是很好:不仅容易安装出错导致不能使用 ...

  7. 基于Tcl脚本生成Vivado工程及编译

    Tcl脚本简介 Tcl--Tool Command Language(读作tickle),诞生于80年代的加州大学伯克利分校,作为一种简单高效可移植性好的脚本语言,目前已经广泛应用在几乎所有的EDA工 ...

  8. Qt MSVC 2017 32bit 编译出现“error: C2131: 表达式的计算结果不是常数”错误

    在MinGW 32bit下正常编译的 qint64 fileLen = dstFile.size(); char fileBuffer[fileLen]; 切换成MSVC 2017 32bit 编译后 ...

  9. ADI demo PL工程的编译-以adrv9371x_zc706为例子之使用Cygwin

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ADI demo PL工程的编译-以adrv9371x_zc706为例子之使用Cygwin 前言 Cygwin 安装 工程编译 总结 ...

  10. ADI demo PL工程的编译-以adrv9371x_zc706为例子

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ADI demo PL工程的编译-以adrv9371x_zc706为例子 参考网页 最近在研究AD9371,ADI官网上是提供了很多示 ...

最新文章

  1. jquery学习手记(10)事件简介
  2. VTK:IO之ImageReader2Factory
  3. spring-boot-devtools
  4. linux ssh客户端_WinSCP软件双系统(Win-Linux)文件传输教程
  5. mybatis 使用简单的增删查改
  6. 移动硬盘根目录里的msdia80.dll文件
  7. iis访问服务器文件夹权限设置,Windows中合理设置共享文件夹访问权限
  8. 是的你没看错,js生成word文档
  9. 股市学习稳扎稳打(四)当宏观经济出现复苏时,不同的行业分别以什么顺序进行轮动上涨
  10. 【论文阅读】【综述】从Optical Flow到Scene Flow
  11. android pixel 2,谷歌 Pixel 2 评测:目前最好的安卓手机
  12. 在巴塞罗那,华为挥别昨日 | MWC 2019 1
  13. Delphi 2010正式版下载(RAD Studio 2010下载)
  14. 浙江工商大学20复试上机题之月利率
  15. 复制模仿是成功最佳的捷径?
  16. 为什么微昂评标变声系统这么红?
  17. 如何高效学习Python?Python入门 Python教程 Python学习路线
  18. 易航网址引导系统 - 一款极其优雅的网址引导系统+内置16套主题和防墙防举报插件
  19. 二叉树的后序遍历-递归和非递归算法
  20. 三维点云数据的读取和三维曲面重建matlab仿真

热门文章

  1. boost.asio 源码剖析
  2. 操作无法完成,因为为其中的文件夹或文件已在另一程序中打开,请关闭该文件或文件,然后重试。
  3. 浅析重复线性渐变repeating-linear-gradient如何使用
  4. 世界ol的服务器在哪个文件夹,世界OL7月新区永恒之约官方服务器开启
  5. 专访京东科技张亮:本土开源需形成吸纳开发者的靶心
  6. oa处理会签流程图_OA-审批流程管理模块
  7. CodeReview流程梳理
  8. 本地idea通过tomcat启动服务停滞
  9. EAS中没有的核算项目新增
  10. 树莓派系统烧录 + 连接树莓派