【问题标题】:issue with using MSBUILD with maxcpucount option使用带有 maxcpucount 选项的 MSBUILD 的问题
【发布时间】:2010-09-07 16:06:57
【问题描述】:

我在 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 个?

【问题讨论】:

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


    【解决方案1】:

    MSBuild 可以并行项目。您的命令行调用(使用 /t)要求 targets 并行构建,这不完全是设计。您还必须在核心 .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”>
         <Target Name="default">
              <MSBuild Projects="proja.proj, projb.proj, probc.proj,prod.proj" BuildInParallel="true"/>
         </Target>
    </Project>
    

    然后你会调用 buildall

    msbuild.exe buildall.proj /m:4
    

    【讨论】:

    • 我只是想指出,根据 MSDN 文档link,BuildInParallel 默认为 true,因此您不需要显式添加它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多