【发布时间】:2011-05-30 04:11:22
【问题描述】:
如何让 VS 2010 一次运行多个 C++ 编译进程?我的意思是并行构建对象模块;我对一次构建多个项目不感兴趣(我知道工具 > 选项 > 构建和运行
基本上,我正在寻找 Visual Studio 的“make -jN”等价物。
【问题讨论】:
标签: visual-studio visual-studio-2010 visual-c++ parallel-builds
如何让 VS 2010 一次运行多个 C++ 编译进程?我的意思是并行构建对象模块;我对一次构建多个项目不感兴趣(我知道工具 > 选项 > 构建和运行
基本上,我正在寻找 Visual Studio 的“make -jN”等价物。
【问题讨论】:
标签: visual-studio visual-studio-2010 visual-c++ parallel-builds
另外,正如Ross Smith在cmets中所说,你还需要在项目上开启“多处理器编译”选项:
【讨论】:
cl.exes。
/MP(又名多线程编译)标志与某些其他构建标志不兼容,例如增量编译。 @billy:它应该为每个翻译单元显示来自每个编译线程(thread> message)的消息,除非他们从 vs08 开始删除了该功能......
为了使 VS 使用多线程构建,必须设置两个开关(都是特定于项目的):
还要检查您的工具->选项->项目和解决方案->VC++ 项目设置->最大并发 C++ 编译数设置。默认值为 0,这使得 VS 可以使用尽可能多的并发编译。
【讨论】:
Necrolis 的评论似乎是正确的解决方案。
/MP (Build with Multiple Processes)
/MP 选项使编译器创建一个或多个副本 本身,每个都在一个单独的过程中。这些副本同时 编译源文件。因此,构建的总时间 源文件可以大大减少。
请注意,您可以在项目级别设置它(因此它将应用于其中的所有文件)以及单个文件,例如,如果您需要使用 #import。
特别是,/MP 通常与预编译头文件或使用#import 的源不兼容;在这种情况下,您仍然可以在项目上设置 /MP 标志,然后在单个文件(通常是 stdafx.cpp 以及使用#import 的任何文件)上清除它。
【讨论】:
jom 是您正在寻找的工具。
来自维基:http://qt-project.org/wiki/jom
jom是nmake的一个克隆,支持多个执行 并行的独立命令。它基本上添加了 -j 命令 类似于 GNU make 的线路开关。
虽然大部分文档针对的是 Qt 开发人员,他们试图在 Windows 上加快 Qt 库的构建速度,但只要您有与 nmake 兼容的 makefile,jom 也应该在非 Qt 项目中运行良好。
wiki 页面有您可以下载的二进制文件,您可以像调用 nmake 一样调用 jom。
【讨论】:
这就是我所做的
1)转到工具->选项,而不是“项目和解决方案”->“构建和运行”对我来说它有核心数量。虽然一开始我以为这就是我需要做的,但事实并非如此
2) 右键单击您的项目并选择属性。在“配置属性”->“C/C++”->“命令行”下输入/MP4,其中 4 是您拥有的内核数。您将收到有关标志不兼容的警告,因此我们还有另一个步骤
3) 转到“配置属性”->“C/C++”->“代码生成”下有“启用最小重建”。将其更改为否。
重建,您应该会在任务管理器中看到多个 CL 进程。
【讨论】:
我明白了!您的要求是在并行线程中构建单个项目。
我发现Shark compiler Control 插件非常有用
【讨论】: