我在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个?
答案 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>
然后你用
调用buildallmsbuild.exe buildall.proj /m:4