まあ、実際に/m
オプションが「で構築する並行プロセスの最大数」を指定します。つまり、最大でmsbuild.exe
のプロセスを並行して開始して、並列にプロジェクトを構築します(各プロセスはたいてい1つのプロジェクトを構築します)。 「すべてのコアを使用する」とは全く異なるもの。 /maxcpucount
がそうでなければヒントかもしれない、/m
オプションの確かに、長い形式の名前、けれども、それの説明は何が起こっているのより良い指示を与える必要があります。
今
/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])
、あなたのソリューションのために許可しない場合(例えば、P1がP2を構築するために必要であり、P2がP3を投影するために必要とされるように)あなたのプロジェクトが別のものに依存しているため、並行してビルドするプロジェクトはありません。ビルドの完了の速さによっては、CPUグラフの「ちらつき」が実際に何が起こっているかについて本当に正確ではない可能性があるため(たとえば、タスクマネージャを使用して)、すべてのコアで関連するアクティビティは表示されませんかなりI/Oが集中しており、CPUの負荷を見ていない)。
コア/ CPUの数と等しい数のmsbuild.exe
プロセス(たとえば、プロセスエクスプローラまたはタスクマネージャを使用)を参照する必要があります(または、/m
にオプション番号として渡す同等の番号オプション。
あなたはまたthis SO questionを参照することをお勧めします。また、「並列のMSBuild」の検索は、より多くの情報といくつかの良いヒットを生成します。
私は、これはすべてのときのように、私のソリューションファイルにすでに設定されていることを思うだろう私はIDEを介して.slnファイルをビルドします。私はタスクマネージャで4つのcl.exeプロセスを参照していますが、私はタスクマネージャで1つのcl.exeと1つのmsbuild.exeプロセスしか見ることができません私はコマンドラインから実行します。分かりやすくするために、CMakeを使用して私のためにソリューションファイルを生成しました。 – Jon
'/ m'を使って私の仕事をしました。 – Oliver