如何在Visual Studio 2010中进行并行构建?

Ros*_*ith 55 visual-studio-2010 visual-studio visual-c++ parallel-builds

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

基本上,我正在寻找Visual Studio相当于"make -jN".

Bil*_*eal 34

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

此外,正如Ross Smith在评论中所说,您还需要打开项目中的"多处理器编译"选项:

  1. 项目属性
  2. 配置属性> C/C++>常规
  3. 多处理器编译
  4. 利润!

  • 事实证明,我在项目属性,配置属性> C/C++>常规>多处理器编译中遗漏了一个选项.转向这种方式的工作 - 它并行构建了一些模块,但仍坚持回到其他人的单个线程,我还没有弄清楚可能导致差异的原因.为每个项目手动设置它也是一件痛苦的事,但我想半个解决方案总比没有好. (11认同)
  • 重要的是要注意`/ MP`(又名多线程编译)标志与某些其他构建标志不兼容,例如增量编译.@billy:它应该显示每个翻译单元的每个编译线程(`thread> message`)的消息,除非他们从vs08中删除了该功能... (6认同)
  • 您可以Shift +选择多个项目并同时编辑它们. (5认同)
  • 这没有任何影响.将其设置为0(默认值,应该表示"使用所有核心")或4(实际核心数)没有任何区别,它仍然一次只构建一个模块. (2认同)
  • @Ross:当这种并行构建生效时,它不会显示在控制台输出中(与项目并行构建不同).您是否根据查看任务管理器或者您是否在控制台上看不到任何内容来验证它是否发生?您应该看到与您拥有核心相同数量的`cl.exe`. (2认同)

jsk*_*rbi 18

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

  • 项目属性 - > C/C++ - >常规 - > 多处理器编译设置为:是(/ MP)
  • project properties-> C/C++ - > Code Generation-> Enable Minimal Rebuild设置为:No(/ Gm-)

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

  • 什么时候需要禁用最小重建才能使用多处理器编译? (2认同)

rob*_*rob 15

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

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

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

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

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


小智 5

这是我所做的

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

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

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

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