方法: MSBuild プロジェクトにカスタム ビルド ツールを追加する

カスタム ビルド ツールは、特定のファイルに関連付けられているユーザー定義のコマンドライン ツールです。

特定のファイルについて、プロジェクト ファイル (.vcxproj) で、実行するコマンド ライン、その他の入力ファイルまたは出力ファイル、および表示するメッセージを指定します。 MSBuild で出力ファイルが入力ファイルに対して最新ではないと判断された場合は、メッセージが表示され、コマンドライン ツールが実行されます。

カスタム ビルド ツールとカスタム ビルド ステップを指定する

カスタム ビルドツールをいつ実行するかを指定するには、プロジェクト ファイルで CustomBuildBeforeTargets および CustomBuildAfterTargets XML 要素のいずれかまたは両方を使用します。 たとえば、MIDL コンパイラの後、C/C++ コンパイラの前にカスタム ビルド ツールを実行するように指定できます。 特定のターゲットを実行する前に、ツールを実行する要素 CustomBuildBeforeTargets を指定します。 特定のターゲットを実行した後に、ツールを実行する要素 CustomBuildAfterTargets を使用します。 両方の要素を使用して、2 つのターゲットの実行の間にツールを実行します。 どちらの要素も指定されていない場合、カスタム ビルド ツールは、既定の場所で、つまり MIDL ターゲットの前に実行されます。

カスタム ビルド ステップとカスタム ビルド ツールで、CustomBuildBeforeTargets および CustomBuildAfterTargets XML 要素で指定された情報が共有されます。 これらのターゲットをプロジェクト ファイル内で 1 回指定します。

カスタム ビルド ツールを追加するには

  1. プロジェクト ファイルに項目グループを追加し、入力ファイルごとに項目を追加します。 次に示すように、コマンドとその入力、出力、メッセージを項目メタデータとして指定します。 この例では、"faq.txt" ファイルがプロジェクトと同じディレクトリに存在すると想定しています。 カスタム ビルド ステップでは、それを出力ディレクトリにコピーします。

    <ItemGroup>
      <CustomBuild Include="faq.txt">
        <Message>Copying readme...</Message>
        <Command>copy %(Identity) $(OutDir)%(Identity)</Command>
        <Outputs>$(OutDir)%(Identity)</Outputs>
      </CustomBuild>
    </ItemGroup>
    

ビルド内でカスタム ビルド ツールが実行される場所を定義するには

  1. プロジェクト ファイルに次のプロパティ グループを追加します。 少なくとも 1 つのターゲットを指定する必要があります。 ビルド ステップを特定のターゲットの前 (または後) に実行することにのみ関心がある場合は、もう一方を省略できます。 この例では、コンパイル後、リンクの前にカスタム ステップを実行します。

    <PropertyGroup>
      <CustomBuildAfterTargets>ClCompile</CustomBuildAfterTargets>
      <CustomBuildBeforeTargets>Link</CustomBuildBeforeTargets>
    </PropertyGroup>
    

関連項目

チュートリアル: MSBuild を使用した C++ プロジェクトの作成
方法: MSBuild プロジェクトでビルド イベントを使用する
方法: MSBuild プロジェクトにカスタム ビルド ステップを追加する
MSBuild コマンドとプロパティの一般的なマクロ
MSBuild の既知の項目メタデータ