方法: MSBuild プロジェクトでビルド イベントを使用する

ビルド イベントは、ビルド処理の特定のステージで MSBuild を実行するコマンドです。ビルド前イベントは、ビルドが開始する前に発生します。リンク前イベントは、リンク ステップが開始する前に発生します。ビルド後イベントは、ビルドが正常に終了した後で発生します。ビルド イベントは、関連するビルド ステップが発生した場合にのみ発生します。たとえば、リンク前イベントは、リンク ステップが実行されない場合には発生しません。

項目定義グループでは、これらの 3 つのビルド イベントは、MSBuild がビルド イベントを実行するときに実行されるコマンド要素 (<Command>) および表示されるメッセージ要素 (<Message>) で表されます。それぞれの要素は省略可能で、同じ要素を複数回指定すると、最後の指定が優先されます。

ビルド イベントが実行されるかどうかを示す省略可能なビルドで使用要素 (<ビルド イベント UseInBuild>) は、プロパティ グループで指定できます。ビルドで使用要素のコンテンツの値は、true または false です。既定では、ビルド イベントに対応するビルドで使用要素が false に設定されていない限り、そのビルド イベントは実行されます。

次の表は、ビルド イベント XML 要素の一覧です。

XML 要素

Description

PreBuildEvent

このイベントは、ビルドの開始前に実行します。

PreLinkEvent

このイベントは、リンク ステップの開始前に実行します。

PostBuildEvent

このイベントは、ビルドの完了後に実行します。

次の表は、ビルドで使用要素の一覧です。

XML 要素

Description

PreBuildEventUseInBuild

ビルド前イベントを実行するかどうかを指定します。

PreLinkEventUseInBuild

リンク前イベントを実行するかどうかを指定します。

PostBuildEventUseInBuild

ビルド後イベントを実行するかどうかを指定します。

使用例

次の例は、「チュートリアル: MSBuild を使用した Visual C++ プロジェクトの作成」で作成した 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 を使用した Visual C++ プロジェクトの作成

その他の技術情報

MSBuild (Visual C++)