1

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 つまでのソリューションの 1 つのプロジェクトをビルドするたびに 4 つのプロセスを手動で実行する必要がありますか?

4

1 に答える 1

6

MSBuild は並列でプロジェクトでき​​ます。コマンド ライン呼び出し (/t を使用) は、ターゲットを並行してビルドするように求めていますが、これは設計どおりではありません。また、並列のコア .proj ファイルにフラグを設定する必要があります。

必要なもの (すべてのアベイル コアを使用して 4 つの項目を並行して実行) を実現するには、msbuild を呼び出し、 BuildInParallelパラメーターを true に設定する「全体的な」proj ファイルが必要です。次に、その呼び出しは、他のプロジェクトを呼び出します。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 に答える