使用MSBUILD和maxcpucount选项的问题

时间:2010-09-07 16:06:57

标签: visual-studio-2008 msbuild parallel-builds

我在4核机器上使用MsBuild。 我给出了以下命令行来构建属于大型VC ++解决方案的4个项目(具有4个以上项目且没有相互依赖关系)。我正在使用Visual Studio 2008。

为了加快构建时间,我试图利用maxcpucount选项,但似乎无效。 我期待每个核心将构建我在命令行提供的4个项目中的每个项目。不幸的是,我测量了构建时间,无论有没有maxcpucount选项,我都有相同的结果。

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe MyVCppSolution.sln 
     /t:ProjA;ProjB;ProjC;ProjD /m

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

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

1 个答案:

答案 0 :(得分:5)

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

设置一个标志

要获得您想要的内容(使用所有可用内核并行4个项目),您需要有一个“整体”proj文件,该文件调用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”>
     <Target Name="default">
          <MSBuild Projects="proja.proj, projb.proj, probc.proj,prod.proj" BuildInParallel="true"/>
     </Target>
</Project>

然后你用

调用buildall
msbuild.exe buildall.proj /m:4