WDK 開発者向け MSBuild 入門

このセクションでは、BUILD.EXEとNMake.exeに精通している WDK 開発者に MSBuild の基本的な用語をいくつか紹介します。 このセクションでは、単純な MSBuild プロジェクトの構築について説明します。

MSBuild に関連する Nmake の概念

WDK のBuild.exe以前のバージョン (WDK 8 より前) を使用している場合は、NMake.exe使用する用語と概念に精通している可能性があります。

  • command - コマンド ライン ツールを呼び出します。
  • target - コマンドの名前付きシーケンスを記述します。
  • dependency - 他のターゲットに依存するターゲットを記述します。
  • Nmake は、1 つ以上のターゲットが指定された make ファイルで呼び出されます。 その後、すべての依存関係が再帰的に実行され、次にターゲットのコマンドが実行されます。
  • Nmake ファイルには、ビルド構造を堅牢に管理するための他の make ファイルを含めることができます。
  • Nmake では、コマンドのパラメーターに置き換えられる名前付き変数の作成もサポートされています。
  • Nmake では、現在のディレクトリやパスの名前など、Make.exe自体によって割り当てられる自動変数もサポートされています。
  • 1 つのビルド中にターゲットが 2 回実行されることはありません。 一度実行すると、ターゲットはその作業を完了したと見なされ、ビルド内の後続のターゲットがそれに依存している場合でも、再び実行されません。

MSBuild の概念

  • C++ プロジェクトのメイン MSBuild ファイル拡張子は.vcxproj。

  • コマンドは タスクと呼ばれるようになり、単なるコマンド ライン プロセスの呼び出しではありません。 代わりに、タスクは、MSBuild がアトミックなビルド操作を実行するために使用できる実行可能コードの単位です。 タスクの完全な一覧については、「Visual C++ に固有の MSBuild タスク」を参照してください。

  • MSBuild は、次の例に示すように、 UsingTask 要素を使用して、共通言語ランタイム (CLR) アセンブリからタスクをインポートします。

    <UsingTask TaskName="TaskName" AssemblyName="AssemblyName" />
    
  • ターゲットはタスクを特定の順序でグループ化し、ビルド プロセスを小さな単位に分割することを可能にします。

  • PropertyGroup を使用すると、人間に優しい形式を使用してプロパティを定義できます。 次の例は、 PropertyGroup の形式を示しています。

    <PropertyGroup>
      <ProductVersion>9.0.30729</ProductVersion>
    </PropertyGroup>
    
  • Item は、 Property のオブジェクト指向バリアントです。 プロパティ形式は名前/値ですが、項目の形式は name/object で、オブジェクトには複数の属性があります。 項目 はオブジェクトの配列です。

  • プロパティ$(project) 形式で参照され、Items は @(name)形式で参照されます。

  • ItemGroup は、 Items のコレクションです。

  • ItemGroups は通常、コンパイルされるすべてのファイルの一覧です。 ファイルのコレクションは、 @(itemname) 表記を使用してタスクに渡されます。 項目の使用の詳細については、 MSBuild 項目 を参照してください。

  • MSBuild には、プロジェクト ファイルで参照できる 組み込みプロパティ が多数用意されています。

  • MSBuildとビルド タスクの詳細については、「MSBuildの概念」および 「MSBuildリファレンス」を参照してください 。