方法: MSBuild プロジェクトでビルド イベントを使用する
ビルド イベントは、ビルド処理の特定の段階で MSBuild により実行されるコマンドです。 ビルドが開始する前に、"ビルド前" イベントが発生します。リンク ステップが開始する前に、"リンク前" イベントが発生します。ビルドが正常に完了すると、"ビルド後" イベントが発生します。 ビルド イベントは、関連付けられたビルド ステップが発生した場合にのみ発生します。 たとえば、リンク ステップが実行されない場合、リンク前イベントは発生しません。
これら 3 つのビルドイベントはそれぞれ、実行されるコマンド要素 (<Command>
) と、MSBuild でビルド イベントが実行されるときに表示されるメッセージ要素 (<Message>
) による項目定義グループで表されます。 各要素は省略可能です。同じ要素を複数回指定した場合は、最後の指定が優先されます。
省略可能な use-in-build 要素 (<
build-eventUseInBuild>
) をプロパティ グループに指定すると、ビルド イベントが実行されるかどうかを示すことができます。 use-in-build 要素の内容の値は、true
または false
です。 既定では、対応する use-in-build 要素が false
に設定されていない限り、ビルド イベントが実行されます。
次の表は、各ビルド イベント XML 要素の一覧です。
XML 要素 | 説明 |
---|---|
PreBuildEvent |
このイベントは、ビルドが開始する前に実行されます。 |
PreLinkEvent |
このイベントは、リンク ステップが開始する前に実行されます。 |
PostBuildEvent |
このイベントは、ビルドが完了した後に実行されます。 |
次の表は、各 use-in-build 要素の一覧です。
XML 要素 | 説明 |
---|---|
PreBuildEventUseInBuild |
ビルド前イベントを実行するかどうかを指定します。 |
PreLinkEventUseInBuild |
リンク前イベントを実行するかどうかを指定します。 |
PostBuildEventUseInBuild |
ビルド後イベントを実行するかどうかを指定します。 |
例
次の例は、msBuild を使用して C++ プロジェクトを作成する Walkthrough で作成されたmyproject.vcxproj ファイルの Project 要素内に追加できます。 "ビルド前" イベントによって、main.cpp のコピーが作成されます。"リンク前" イベントによって、main.obj のコピーが作成されます。"ビルド後" イベントによって、myproject.exe のコピーが作成されます。 プロジェクトがリリース構成を使用してビルドされる場合、ビルド イベントが実行されます。 プロジェクトがデバッグ構成を使用してビルドされる場合、ビルド イベントは実行されません。
<ItemDefinitionGroup>
<PreBuildEvent>
<Command>copy $(ProjectDir)main.cpp $(ProjectDir)copyOfMain.cpp</Command>
<Message>Making a copy of main.cpp </Message>
</PreBuildEvent>
<PreLinkEvent>
<Command>copy $(ProjectDir)$(Configuration)\main.obj $(ProjectDir)$(Configuration)\copyOfMain.obj</Command>
<Message>Making a copy of main.obj</Message>
</PreLinkEvent>
<PostBuildEvent>
<Command>copy $(ProjectDir)$(Configuration)\$(TargetFileName) $(ProjectDir)$(Configuration)\copyOfMyproject.exe</Command>
<Message>Making a copy of myproject.exe</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PreBuildEventUseInBuild>true</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>true</PreLinkEventUseInBuild>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PreBuildEventUseInBuild>false</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>false</PreLinkEventUseInBuild>
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
</PropertyGroup>
関連項目
コマンド ラインでの MSBuild - C++
チュートリアル: MSBuild を使用した C++ プロジェクトの作成