57

如何让 VS 2010 一次运行多个 C++ 编译进程?我的意思是并行构建对象模块;我对一次构建多个项目不感兴趣(我知道工具 > 选项 > 构建和运行 < 并行项目构建的最大数量,但这不是我想要的)。

基本上,我正在寻找 Visual Studio 的“make -jN”等价物。

4

6 回答 6

34
  1. 工具 -> 选项
  2. 项目和解决方案\VC++ 项目设置
  3. 最大并发 C++ 编译数

此外,正如罗斯史密斯在评论中所说,您还需要在项目上打开“多处理器编译”选项:

  1. 项目属性
  2. 配置属性 > C/C++ > 常规
  3. 多处理器编译
  4. 利润!
于 2011-05-30T04:13:40.273 回答
18

为了使 VS 使用多线程构建,必须设置两个开关(两者都是特定于项目的):

  • 项目属性->C/C++->常规->多处理器编译设置为:是(/MP)
  • 项目属性->C/C++->代码生成->启用最小重建设置为:否(/Gm-)

还要检查您的工具->选项->项目和解决方案->VC++项目设置->最大并发C++编译设置。默认值为 0,这使 VS 可以使用尽可能多的并发编译。

于 2012-12-08T21:55:42.913 回答
15

Necrolis 的评论似乎是正确的解决方案。

/MP(使用多个进程构建)

/MP 选项使编译器创建自己的一个或多个副本,每个副本都在一个单独的进程中。这些副本同时编译源文件。因此,可以显着减少构建源文件的总时间。

请注意,您可以在项目级别设置它(因此它将应用于其中的所有文件)以及单个文件,例如,如果您需要使用#import.

特别是,/MP 通常与预编译的头文件或使用#import;的源不兼容。在这种情况下,您仍然可以在项目上设置 /MP 标志,然后在单个文件(通常是 stdafx.cpp 以及使用 #import 的任何文件)上清除它。

于 2012-04-06T07:22:38.760 回答
4

这是我所做的

1)转到工具->选项而不是“项目和解决方案”->“构建和运行”对我来说它有核心数量。虽然起初我认为这就是我需要做的,但事实并非如此

2)右键单击您的项目并选择属性。在“配置属性”->“C/C++”->“命令行”下输入/MP4其中 4 是您拥有的内核数。您将收到有关标志不兼容的警告,因此我们还有另一个步骤

3) 转到“配置属性”->“C/C++”->“代码生成”下,有“启用最小重建”。将其更改为否。

重建,您应该在任务管理器中看到多个 CL 进程。

于 2012-04-11T07:40:19.783 回答
4

jom 是您正在寻找的工具。

来自维基:http: //qt-project.org/wiki/jom

jom 是nmake 的克隆,支持并行执行多个独立命令。它基本上添加了类似于 GNU make 的 -j 命令行开关。

虽然大多数文档都是针对 Qt 开发人员试图加快在 Windows 上构建 Qt 库的,但 jom 应该在非 Qt 项目中也能很好地工作,只要你有一个兼容 nmake 的 makefile。

wiki 页面有您可以下载的二进制文件,您可以像 nmmake 一样调用 jom。

于 2012-04-06T00:14:37.273 回答
0

我懂了!您的要求是在并行线程中构建单个项目。

我发现Shark 编译器控制插件非常有用

于 2014-03-21T18:29:47.107 回答