9

最近、中規模の Visual Studio 2005 ソリューションを Visual Studio 2010 に変換しました。プロジェクトの 1 つに、C/C++ ファイルではなく、カスタム ビルド ツールを実行するバッチ ファイルを使用してコンパイルされたファイルが含まれています。カスタム ビルド ステップの出力はいくつかの C++ ファイルであり、その後コンパイルする必要があります。

関連ファイルのプロパティのカスタム ビルド ステップの出力は、生成された C++ ファイルに正しく設定されます。

問題は、VS2010 がカスタム ビルド ステップでファイルの前に生成された C++ ファイルをコンパイルしようとする場合があることです。これは、クリーン ビルドで C++ ファイルを見つけられず、失敗することを意味します。何度かビルドを試みると、最終的にカスタム ファイルがコンパイルされ、ビルドは成功しますが、これは明らかに自動ビルドの良い解決策ではありません。

VS2005 ではこのプロジェクトのビルドに問題はありませんが、VS2010 ではカスタム ビルド ステップの出力から正しいコンパイル順序を決定できません。VS2010 で正しいコンパイル順序を強制する別の方法はありますか?

4

4 に答える 4

3

Visual Studioは並列ビルドをサポートしており、同時に複数のプロジェクトをビルドできます。プロジェクト間の依存関係を正しく認識できない場合、これは正しく機能しません。カスタムビルドは確かにここで問題を引き起こす可能性があります。並列ビルドの数は構成可能です。1に設定すると、非常に大雑把ですが効果的な回避策になります。ツール+オプション、プロジェクトとソリューション、ビルドと実行、「並列プロジェクトビルドの最大数」設定。

ただし、そうしないでください。並列ビルドは大幅な時間の節約になります。プロジェクトの依存関係を明示的に設定することで、この種の問題を修正します。ソリューションエクスプローラーウィンドウで生成されたC++ファイルを使用するプロジェクトを右クリックし、[プロジェクトの依存関係]をクリックします。C++ファイルを生成するプロジェクトのチェックボックスをオンにします。他の読者に関連する場合は、この回答をチェックして、カスタムビルドステップのみを実行し、他には何も実行しないプロジェクトを作成する方法を確認してください。

于 2012-10-08T09:32:54.157 に答える
1

デフォルトでは、Visual Studio 2008 は最初にカスタム ビルド ツールを実行します。順序は、プロジェクトの右クリック メニューの [Tool Build Order] コマンドで変更できます。この機能は Visual Studio 2010 では使用できません。回避策がわかりません。

于 2013-10-18T20:16:32.580 に答える
0

カスタム ビルド ステップが一度に 1 つのファイルに対してのみ実行されることに気付き、問題を解決しました。次のビルドなどで次のファイルに対して実行されます。その理由は明らかに、私のカスタム ビルド ステップがバッチ ファイルを呼び出しており、VS2010 が 1 つの一時バッチ ファイルを作成してすべてのカスタム ビルド ファイルを実行するためです。 解決策はこのディスカッションで指摘されました: http://social.msdn.microsoft.com/Forums/en-HK/msbuild/thread/ca392036-ebdb-4812-930e-f90aa445cca5したがって、マスター バッチ ファイルの実行が途中で終了することはありません。

于 2012-10-22T06:04:02.967 に答える