如何在 Visual Studio 解决方案构建期间限制并行 cl.exe 进程的数量?

How to limit the number of parallel cl.exe processes during the Visual Studio solution build?

我最近注意到,一旦我开始构建我正在使用的 Visual Studio 解决方案(~200 个 C++ 项目),我就会得到大量的 cl.exe 进程。

我对几个 cl.exe 运行 并行的事实并不感到惊讶,因为我的项目设置了 /MP 选项。

但我希望它们的数量会受到 Visual Studio "Options" 中以下设置的限制。

我认为 运行 在 4 核 PC 上并行处理数十个进程并不是构建解决方案的最有效方式。

所以,基本上我有两个问题:

P.S. 我通常使用 Visual Studio 2013 Update 4 编译我的解决方案,但使用 Visual Studio 2017 可以观察到相同的行为.

在“工具”菜单下,选择“选项”。然后在项目和解决方案下,构建和 运行 页面有一个字段 "maximum number of parallel project builds".

我认为您需要阅读 this,其中的结论是您需要设置编译以适应 VS 的世界观。

同时将并行项目的数量限制为 2-3,具体取决于您 运行 它所在的实际 PC。如果您的 PC 是拥有 16 个以上核心的怪物,您可能会上升 1-2 个。

理想情况下,VS 应该提供使用 X 线程的选项,但可惜。

确保您的任何项目都没有 /MP 开关。

然后设置最大并行项目构建将直接关系到编译可执行实例的数量。

可能会更慢。 另一种方法是强制 Visual Studio/MSBuild 具有特定的亲和力。这不会限制线程,但会为正在运行的 system/other 程序保留一些备用内核。

要限制 cl.exe 的数量,您应该使用此选项(至少它存在于 MSVC 2015 中):

工具->选项->项目和解决方案->VC++项目Settings\Maximum并发C++编译

默认为零表示“CPU 数量”。