| 層級 | 控制參數 | 範圍 | 預設值 |
|---|---|---|---|
| 方案層 (MSBuild) | /m[:N] 或 工具 > 選項 > 專案和方案 > 建置和執行 > 最大平行專案數 | 同時建置專案數 | CPU 邏輯核心數 |
| 專案層 (CL 編譯器) | /MP[N] 或 專案屬性 C/C++ > 一般 > 多處理器編譯 | 單專案內同時編譯 .cpp 數 | CPU 邏輯核心數 |



msbuild MySolution.sln /m:4 /p:CL_MPCount=2
/m:4 -> MSBuild 同時建置 4 個專案
/p:CL_MPCount=2 -> 傳遞給 CL 的 /MP2 (每專案 2 個平行編譯)
注意:VS IDE 內建置不受 CL_MPCount 環境變數影響,需在專案屬性或 .vcxproj 設定。
MultiprocCpp.props。
<PropertyGroup Condition="'$(MultiprocCLCount)' != '' and '$(MultiprocCLCount)' > '0'">
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ProcessorNumber>$(MultiprocCLCount)</ProcessorNumber>
</PropertyGroup>
MultiprocCLCount=2。MultiprocCLCount=8。若方案 8 專案皆開 /MP8,MSBuild /m8 啟動 → 64 個 cl.exe 同時執行,CPU/磁碟/記憶體飽和反而變慢。
/m 設為核心數 減 1 或 2 (留資源給 OS/IDE)。/MP 視專案大小調整:大專案 /MP4,小專案 /MP1 (關閉)。/MP;Debug 建置快,可關閉減少負載。#import、/Gm (增量編譯) 的檔案 必須關閉 /MP (在檔案屬性 C/C++ > 一般 > 多處理器編譯 = 否)。在 .vcxproj 中對特定 ClCompile 項目設定 ProcessorNumber:
<ClCompile Include="Heavy.cpp">
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ProcessorNumber>2</ProcessorNumber> <!-- 此檔最多 2 平行 -->
</ClCompile>
配合 /MP2 整體上限,達成細粒度控制。
MultiprocCpp.props 統一管理 /MP。MultiprocCLCount、MultiprocMSBuildCount 區分開發/建置機。/clp:PerformanceSummary) 找出最佳平行度。