3

Visual Studios 2008 で構成されたプロジェクトがあります。IDE を開いてビルドすると、システムのすべてのコアがプロジェクトのビルドに使用されます。ただし、コマンドラインからビルドしようとすると、1 つのコアしか使用されません。これが私が実行しているコマンドです:

C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild VTK.sln /m /fl /tv:3.5 /p:Configuration=RelWithDebInfo

ドキュメントを読むと、 /m スイッチは MSBuild にすべてのコアを使用するように指示する必要があるように見えますが、そうではありません。すべてのコアを使用する方法はありますか?

ありがとう

4

1 に答える 1

2

実際、この/mオプションは「ビルドする同時プロセスの最大数」を指定します。つまりmsbuild.exe、プロジェクトを並行してビルドするために並行して開始するプロセスの最大数です (各プロセスは最大で 1 つのプロジェクトをビルドします)。「すべてのコアを使用する」とはかなり異なります。確かに、/mオプションの長い形式の名前は/maxcpucount別のヒントになるかもしれませんが、その説明は何が起こっているのかをよりよく示しているはずです:

  /maxcpucount[:n]   Specifies the maximum number of concurrent processes to
                     build with. If the switch is not used, the default
                     value used is 1. If the switch is used without a value
                     MSBuild will use up to the number of processors on the
                     computer. (Short form: /m[:n])

ここで、たとえば、各プロジェクトが別のプロジェクトの依存関係であるため (P2 をビルドするには P1 が必要であり、P3 をプロジェクトするには P2 が必要であるなど)、ソリューションでプロジェクトを並行してビルドできない場合は、あなたが勝ちました。並列ビルドが発生していません。ビルドの完了速度によっては、CPU グラフの「ちらつき」が実際に何が起こっているかについて実際には正確ではない可能性があるため (タスク マネージャーを使用するなど)、すべてのコアで関連するアクティビティが表示されないこともあります (ビルドがまた、かなり I/O 集約的であり、CPU 負荷を見てもわかりません)。

ただし、(たとえば、Process Explorer または Task Manager を使用して) 使用してmsbuild.exeいるコア/CPU の数 (またはオプションの数としてオプションに渡す同等の数) に一致するプロセスの数を確認する必要があり/mます。

この SO questionも参照してください。また、"parallel msbuild" を検索すると、より多くの情報を含む良いヒットが得られます。

于 2012-05-03T04:38:40.010 に答える