嗯,其实/m
选项指定“并发进程建立与最大数量”。也就是说,并行启动的最大并行数量为msbuild.exe
的进程可并行构建项目(每个进程至多会构建一个项目)。与“使用所有核心”完全不同。虽然,不可否认,/m
选项的长格式名称,/maxcpucount
可能暗示,否则,它的描述应该给一个什么样的更好的指标是怎么回事:
/maxcpucount[:n] Specifies the maximum number of concurrent processes to
build with. If the switch is not used, the default
value used is 1. If the switch is used without a value
MSBuild will use up to the number of processors on the
computer. (Short form: /m[:n])
现在,如果您的解决方案不允许项目可以并行构建,例如,因为您的每个项目都是另一个项目的依赖项(比如P1需要构建P2,P2需要项目P3等),所以不会看到任何并行构建发生。根据构建完成的速度,您也不会在所有内核上看到任何相关活动(例如,使用任务管理器),因为CPU图形的“闪烁”可能实际上并不准确也相当I/O密集型,它不显示CPU负载)。
但是,您应该看到(例如使用Process Explorer或任务管理器)多个msbuild.exe
进程,这些进程与您拥有的核心数/ CPU数相匹配(或者您作为可选数传递给/m
的等效数选项。
您可能还需要参考this SO question,另外寻找“并行的MSBuild”产生一些好的命中更多的信息。
我会认为这是所有设置已经在我的解决方案文件,当我通过IDE构建.sln文件我在任务管理器中看到了4个cl.exe进程,但是,我只能在任务管理器上看到一个cl.exe和一个msbuild.exe进程当我从命令行运行它。为了清楚起见,使用CMake为我生成了解决方案文件。 – Jon
使用'/ m'为我工作。 – Oliver