我有一个使用 Visual Studios 2008 配置的项目。当我打开 IDE 并点击构建时,系统上的所有核心都用于构建该项目。但是,当我尝试从命令行构建时,仅使用 1 个核心。这是我正在运行的命令:
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild VTK.sln /m /fl /tv:3.5 /p:Configuration=RelWithDebInfo
通过阅读文档, /m 开关似乎应该告诉 MSBuild 使用所有核心,但事实并非如此。有什么想法如何让它使用所有核心吗?
Thanks
嗯,实际上/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])
现在,如果您的解决方案不允许并行构建项目,例如因为您的每个项目都是另一个项目的依赖项(例如构建 P2 需要 P1,项目 P3 需要 P2 等),那么您就赢了没有看到任何并行构建发生。根据构建完成的速度,您也不会在所有核心上看到任何相关活动(例如使用任务管理器),因为 CPU 图表的“闪烁”可能并不准确地说明真正发生的情况(注意构建是也相当 I/O 密集型,这并没有显示出 CPU 负载)。
但是,您应该看到(例如使用 Process Explorer 或任务管理器)许多msbuild.exe
与您拥有的核心/CPU 数量匹配的进程(或作为可选数字传递给的等效数字)/m
option.
您可能还想参考这个问题 https://stackoverflow.com/q/997047/21567。搜索“parallel msbuild”也会产生一些不错的结果,其中包含更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)