私は40以上のプロジェクトで大きな解決策を持っています。それらのほぼ半分はテストプロジェクトです。私のプロジェクトでは、コードコントラクト、コード分析、スタイル分析の両方を使用しています。クアッドコアCPUに並列に依存しないプロジェクトを構築できるようにしたいと考えています。
プロジェクトを並行してビルドするようにmsbuildをセットアップするにはどうすればよいですか?
Visual Studioの場合:ツール|オプション|プロジェクトとソリューション|ビルドして実行します。これはデフォルトでCPUカウントになります。
コマンドラインから:msbuild /maxcpucount[:n]
(nが指定されていない場合、CPUカウントを使用します)。
次の方法で、ビルドをMSBuild
で並行して起動できます。
BuildInParallel
タスクの属性MSBuild
をtrue
に設定します
<Target Name="RunInParallel">
<MSBuild BuildInParallel="true"
Projects="@(Projects)"
Targets="RunCodeAnalysis">
</MSBuild>
</Target>
または、パラメーター/maxcpucount:X
を指定してmsbuildを呼び出します。ここでX
は、ビルドに関係するワーカープロセスの数を指定します。このソリューションは、ニーズにより適しています。
msbuild [YourSolutionFile.sln] /maxcpucount:4 /p:Platform=AnyCpu;Configuration=Debug;
Scott Hanselmanは、外部ツールとしてプロセスをVisual Studioに(ちょっと)統合したい場合は、 投稿 と書いています。
C++プロジェクトの場合、VisualStudioで直接マルチプロセッサビルドを構成できます。
Tools | Options | Projects and Solutions | Build and Run
並列コンパイルする-jスイッチをサポートするnmakeのクローンがあることを私は知っています:
http://qt.gitorious.org/qt-labs/jom
また、MSbuildのハックもあります。グーグルで検索してください。また、複数のマシンやおそらく複数のコアでのビルドをサポートするツールがあることも知っていますが、現時点ではその名前を覚えていません。
お役に立てれば。
次に、探している本当の答えは、/ MPコンパイラフラグをCXXコンパイラフラグに追加することです。
VisualStudioの場合プロジェクトのプロパティページ> C\C++>一般的なマルチプロセッサのコンパイルで、「はい」(/ MP)と入力します。これで、40個のプロジェクトすべてが各コアで並行して構築されます。
これは、C++だけでなく、すべての言語のVisual Studio11に組み込まれています。 「VisualStudio2010には、「並列プロジェクトビルドの最大数」のオプションが含まれていました。制限の兆候はありませんでしたが、このIDEオプションはC++プロジェクトでのみ機能しました。幸い、この制限はなくなりました。 www.visualstudiomagazine.com からVisual Studio 11 "に適用されます