1

我在 4 核机器上使用 MsBuild。我提供以下命令行来构建属于大型 VC++ 解决方案的 4 个项目(拥有超过 4 个项目,全部没有相互依赖关系)。我正在使用 Visual Studio 2008。

为了加快构建时间,我试图利用这些maxcpucount选项,但它似乎不起作用。我期望每个核心都会构建我在命令行提供的 4 个项目中的每一个。不幸的是,我测量了建造时间,无论有没有maxcpucount选择,我都有相同的确切结果。

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe MyVCppSolution.sln
     /t:项目A;项目B;项目C;项目D /米

你知道我在这里做错了什么吗?

正确的说法是“一次构建 4 个 MyVCppSolution.sln 解决方案项目”还是我应该手动运行 4 个进程,每个进程构建一个解决方案的单个项目,最多 4 个?

4

1 回答 1

6

MSBuild 可以并行项目。您的命令行调用(使用 /t)要求并行构建目标,这不完全是设计。您还必须在核心 .proj 文件中为并行设置一个标志

要实现您想要的(使用所有可用内核并行处理 4 个项目),您需要有一个调用 msbuild 并将BuildInParallel参数设置为 true 的“整体”项目文件。然后那个调用,调用你的其他项目。msbuild.exe 和 BuillInParallel 上的 /m 组合将为您提供所需的内容。

所以会这样:(如果您想要并行构建 ProjA、B、C、D)

文件 buildall.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion=”3.5”&gt;
     <Target Name="default">
          <MSBuild Projects="proja.proj, projb.proj, probc.proj,prod.proj" BuildInParallel="true"/>
     </Target>
</Project>

然后你会打电话给 buildall

msbuild.exe buildall.proj /m:4
于 2010-09-08T19:45:13.393 回答