0

私は大きなC++プロジェクトを持っており、64と32の両方と互換性のあるアプリケーションを構築しているため、構築フェーズで多くのステップを実行する必要があります。proj1、Porj2、Proj3の3つのプロジェクトがあります。

そして私は次のことをする必要があります:

  1. proj1(32ビットバージョン)からcppファイルを除外します

  2. cppファイルをproj1(64ビットバージョン)に含める

  3. proj1をビルドする

  4. proj2をビルドする

  5. proj2の出力を実行します

  6. proj3(32ビットバージョン)からcppファイルを除外する

  7. cppファイルをproj3(64ビットバージョン)に含める

  8. proj3をビルドする

  9. proj3からビルドされたexeの名前を変更します

  10. proj1(64ビットバージョン)からcppファイルを除外します

  11. cppファイルをproj1(32ビットバージョン)に含める

まだ他のいくつかの手順があります...私はそれを手動で行っていましたが、イライラしました。MSBUILDを使用する必要があることがわかりましたが、ネイティブコードの構築に使用されていますか?そして、どうすればこれらのタスクを実行できますか?

-プロジェクトへのcppファイルの除外と包含

-建築プロジェクト

4

1 に答える 1

2

Visual Studio 2010以降では、C++プロジェクトはMSBuildを使用します。


構成に基づいてファイルを除外または含めるよりも、プリプロセッサディレクティブを使用してファイルの内容を条件付きでコンパイルする方が簡単です。たとえば、ファイルの内容全体を次のようにラップします。

#ifdef MY_32BIT_BUILD_MACRO
// Source file contents here
#endif

同様に、64ビットビルド用のマクロもあります。Visual C ++を使用する場合は、事前定義されたマクロ_M_IX86_M_X64事前定義されたマクロを使用して、それぞれx86またはx64のどちらでコンパイルしているかを検出できます。

または、プロジェクトファイル内の特定のソースファイルConditionのアイテムにプロパティを追加し、特定のプロパティが設定されている場合にのみビルドに含めることができます。ClCompileただし、ファイルを含めるかどうかを決定するために使用する必要のある複雑なルールがない限り、ソースファイル内の条件付きコンパイルの方が適していると思います。


ソリューションでは、プロジェクトの依存関係を設定して、あるプロジェクトが別のプロジェクトの前にビルドされるようにすることができます。ソリューションを右クリックし、[プロパティ]を選択して、[共通のプロパティ]->[プロジェクトの依存関係]を参照します。依存関係は、プロジェクトファイルで指定することもできます。

ビルド後のタスクを使用して、ビルドの出力を実行できます。プロジェクトを右クリックし、[プロパティ]を選択して、[構成のプロパティ]->[ビルドイベント]を参照します。ビルド後のイベントは、ビルドが完了したときにコマンドを実行するために使用できます。


ビルド後に実行可能ファイルの名前を変更するよりも、ビルドで正しい名前の実行可能ファイルを生成する方が簡単です。プロジェクトプロパティの[構成プロパティ]->[一般]で、[ターゲット名]プロパティを使用して、プライマリビルド出力の名前を設定できます。

于 2012-04-17T18:14:28.400 に答える