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: 使用jom实现msvc工程并发编译提高速度(-j)相关推荐
- cmake:解决MSVC下/MT 编译paho.mqtt.c的问题
paho.mqtt.c是eclipse开发的C语言跨平台mqtt client 开源库,之前写过一篇博客<cmake:VS2015和GCC编译paho.mqtt C/C++ client> ...
- CMake设置MSVC工程MT/MTd/MD/MDd
文章目录 0. 前言 1. 如何设置 1.1 CMakeLists代码 1.2 要点1:POLICY 1.3 要点2:set_property 0. 前言 在MSVC工程上右键->属性,找到配置 ...
- 流场可视化工程dlb-dynamicdr部署日志:阶段二:工程本地编译
流场可视化工程dlb-dynamicdr部署日志:阶段二: 工程本地编译 2022-02-25 阶段一 阶段二:勘误 阶段三:为之前的库编译生成静态链接库 .a文件 Par_METIS重新生成 MET ...
- Eclipse——Maven项目工程无法编译但可以运行解决方案
问题描述 Maven项目工程无法编译但可以运行. 只能运行上一次成功的版本. 问题分析 pom.xml文件错误. 解决方案 方案一:选中项目 --> 右键 --> Maven --> ...
- Android工程的编译过程
现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的每一步都做了什么,需要 ...
- 乐鑫ESP32开发 1.Vscode创建新工程,编译,下载烧录,监视端口,点亮一个LED
前言 Vscode安装ESP-IDF插件后,会在左下角生成一些按钮,用户可以点击实现配置.编译.下载.调试等功能. 但鉴于ESP-IDF的Vscode插件体验不是很好:不仅容易安装出错导致不能使用 ...
- 基于Tcl脚本生成Vivado工程及编译
Tcl脚本简介 Tcl--Tool Command Language(读作tickle),诞生于80年代的加州大学伯克利分校,作为一种简单高效可移植性好的脚本语言,目前已经广泛应用在几乎所有的EDA工 ...
- Qt MSVC 2017 32bit 编译出现“error: C2131: 表达式的计算结果不是常数”错误
在MinGW 32bit下正常编译的 qint64 fileLen = dstFile.size(); char fileBuffer[fileLen]; 切换成MSVC 2017 32bit 编译后 ...
- ADI demo PL工程的编译-以adrv9371x_zc706为例子之使用Cygwin
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ADI demo PL工程的编译-以adrv9371x_zc706为例子之使用Cygwin 前言 Cygwin 安装 工程编译 总结 ...
- ADI demo PL工程的编译-以adrv9371x_zc706为例子
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ADI demo PL工程的编译-以adrv9371x_zc706为例子 参考网页 最近在研究AD9371,ADI官网上是提供了很多示 ...
最新文章
- jquery学习手记(10)事件简介
- VTK:IO之ImageReader2Factory
- spring-boot-devtools
- linux ssh客户端_WinSCP软件双系统(Win-Linux)文件传输教程
- mybatis 使用简单的增删查改
- 移动硬盘根目录里的msdia80.dll文件
- iis访问服务器文件夹权限设置,Windows中合理设置共享文件夹访问权限
- 是的你没看错,js生成word文档
- 股市学习稳扎稳打(四)当宏观经济出现复苏时,不同的行业分别以什么顺序进行轮动上涨
- 【论文阅读】【综述】从Optical Flow到Scene Flow
- android pixel 2,谷歌 Pixel 2 评测:目前最好的安卓手机
- 在巴塞罗那,华为挥别昨日 | MWC 2019 1
- Delphi 2010正式版下载(RAD Studio 2010下载)
- 浙江工商大学20复试上机题之月利率
- 复制模仿是成功最佳的捷径?
- 为什么微昂评标变声系统这么红?
- 如何高效学习Python?Python入门 Python教程 Python学习路线
- 易航网址引导系统 - 一款极其优雅的网址引导系统+内置16套主题和防墙防举报插件
- 二叉树的后序遍历-递归和非递归算法
- 三维点云数据的读取和三维曲面重建matlab仿真