C++ プロジェクトの MSBuild の内部
IDE でプロジェクト プロパティを設定し、プロジェクトを保存すると、Visual Studio によってプロジェクト設定がプロジェクト ファイルに書き込まれます。 プロジェクト ファイルには、プロジェクトに固有の設定が含まれています。 ただし、プロジェクトのビルドに必要なすべての設定が含まれているわけではありません。 プロジェクト ファイルには、追加の "サポート ファイル" のネットワークを含む Import
要素が含まれています。サポート ファイルには、プロジェクトのビルドに必要な残りのプロパティ、ターゲット、設定が含まれています。
サポート ファイル内のほとんどのターゲットとプロパティは、ビルド システムを実装するためだけに用意されています。 この記事では、MSBuild コマンド ラインで指定できる便利なターゲットとプロパティについて説明します。 その他のターゲットおよびプロパティについては、サポート ファイル ディレクトリ内のファイルを参照してください。
サポート ファイル ディレクトリ
既定では、Visual Studio の主要なサポート ファイルは、次のディレクトリに配置されています。 この情報はバージョン固有です。
Visual Studio 2022 および 2019
%VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\
ターゲットによって使用される主要なターゲット ファイル (
.targets
) およびプロパティ ファイル (.props
) があります。 既定では、$(VCTargetsPath)
マクロではこのディレクトリを参照します。<version>
プレースホルダーは Visual Studio バージョンを指しています。Visual Studio 2022 の場合は v170、Visual Studio 2019 の場合は v160、Visual Studio 2017 の場合は v150 です。%VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\
親ディレクトリ内のターゲットおよびプロパティをオーバーライドする、プラットフォーム固有のターゲット ファイルおよびプロパティ ファイルがあります。 このディレクトリ内のターゲットによって使用されるタスクを定義する DLL も含まれています。
<platform>
プレースホルダーは、ARM、ARM64、Win32、または x64 サブディレクトリを表しています。%VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\
指定の
<toolset>
を使用してビルドで C++ アプリケーションを生成するためのディレクトリが含まれています。<platform>
プレースホルダーは、ARM、ARM64、Win32、または x64 サブディレクトリを表しています。<toolset>
プレースホルダーは、ツールセット サブディレクトリを表しています。
Visual Studio 2017
%VSINSTALLDIR%Common7\IDE\VC\VCTargets\
ターゲットによって使用される主要なターゲット ファイル (
.targets
) およびプロパティ ファイル (.props
) があります。 既定では、$(VCTargetsPath)
マクロではこのディレクトリを参照します。%VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\
親ディレクトリ内のターゲットおよびプロパティをオーバーライドする、プラットフォーム固有のターゲット ファイルおよびプロパティ ファイルがあります。 このディレクトリ内のターゲットによって使用されるタスクを定義する DLL も含まれています。
<platform>
プレースホルダーは、ARM、ARM64、Win32、または x64 サブディレクトリを表しています。%VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\
指定の
<toolset>
を使用してビルドで C++ アプリケーションを生成するためのディレクトリが含まれています。<platform>
プレースホルダーは、ARM、Win32、または x64 サブディレクトリを表しています。<toolset>
プレースホルダーは、ツールセット サブディレクトリを表しています。
Visual Studio 2015 以前
<drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\
ターゲットによって使用される主要なターゲット ファイル (
.targets
) およびプロパティ ファイル (.props
) があります。 既定では、$(VCTargetsPath) マクロはこのディレクトリを参照します。<drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\
親ディレクトリ内のターゲットおよびプロパティをオーバーライドする、プラットフォーム固有のターゲット ファイルおよびプロパティ ファイルがあります。 このディレクトリ内のターゲットによって使用されるタスクを定義する DLL も含まれています。
<platform>
プレースホルダーは、ARM、Win32、または x64 サブディレクトリを表しています。<drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\
指定の
<toolset>
を使用してビルドで C++ アプリケーションを生成するためのディレクトリが含まれています。<version>
プレースホルダーは、Visual Studio 2012 の場合は V110、Visual Studio 2013 の場合は V120、Visual Studio 2015 の場合は V140 になります。<platform>
プレースホルダーは、ARM、Win32、または x64 サブディレクトリを表しています。<toolset>
プレースホルダーは、ツールセット サブディレクトリを表しています。 たとえば、Visual Studio 2015 ツールセットを使用して Windows アプリをビルドする場合は v140 です。 または、Visual Studio 2013 ツールセットを使用して Windows XP 用にビルドするには v120_xp です。<drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\
ビルドで Visual Studio 2008 または Visual Studio 2010 のいずれかのアプリケーションを生成できるようにするパスには、
<version>
が含まれていません。 これらのバージョンでは、<platform>
プレースホルダーは Itanium、Win32、または x64 サブディレクトリを表しています。<toolset>
プレースホルダーは、v90 または v100 ツールセット サブディレクトリを表しています。
サポート ファイル
サポート ファイル ディレクトリには、次の拡張子を持つファイルが含まれます。
拡張機能 | 説明 |
---|---|
.targets |
ターゲットによって実行されるタスクを指定する Target XML 要素が含まれます。 タスク パラメーターにファイルとコマンド ライン オプションを割り当てるために使用される、PropertyGroup 、ItemGroup 、ItemDefinitionGroup 、およびユーザー定義の Item の各要素が含まれることもあります。詳細については、 Target 要素 (MSBuild) に関するページを参照してください。 |
.props |
ビルド時に使用されるファイル設定とパラメーター設定を指定する Property Group XML 要素およびユーザー定義の Property XML 要素が含まれます。追加の設定を指定する ItemDefinitionGroup XML 要素およびユーザー定義の Item XML 要素が含まれることもあります。 項目定義グループに定義されている項目はプロパティに似ていますが、コマンド ラインからはアクセスできません。 Visual Studio プロジェクト ファイルでは、プロパティではなく項目を使用して設定を表すことがよくあります。詳細については、「 ItemGroup 要素 (MSBuild)、ItemDefinitionGroup 要素 (MSBuild)、Item 要素 (MSBuild)」を参照してください。 |
.xml |
IDE ユーザー インターフェイス要素を宣言および初期化する XML 要素が含まれています。 たとえば、プロパティ シート、プロパティ ページ、TextBox コントロール、listbox コントロールなどです。.xml ファイルでは、MSBuild ではなく IDE が直接サポートされます。 ただし、IDE プロパティの値は、ビルド プロパティおよび項目に割り当てられます。ほとんどの .xml ファイルは、ロケール固有のサブディレクトリにあります。 たとえば、英語 (米国) 地域のファイルは $(VCTargetsPath)\1033\ にあります。 |
ユーザー ターゲットおよびプロパティ
MSBuild を効果的に使用するためには、どのプロパティとターゲットが役に立ち、どれが関係しているかを知っておくと便利です。 ほとんどのプロパティとターゲットは、Visual Studio ビルド システムを実装するために役立つもので、ユーザーには関係がありません。 ここでは、知っておくと役立つ、ユーザー指向のプロパティとターゲットについて説明します。
PlatformToolset
プロパティ
PlatformToolset
プロパティでは、ビルドでどの MSVC ツールセットを使用するかを決定します。 既定では、現在のツールセットが使用されます。 このプロパティを設定すると、その値がリテラル文字列と連結され、パスが形成されます。 これは、特定のプラットフォーム用にプロジェクトをビルドするために必要なプロパティとターゲット ファイルが格納されているディレクトリです。 特定のバージョンのプラットフォーム ツールセットを使用してビルドするには、そのプラットフォーム ツールセットをインストールする必要があります。
たとえば、Visual Studio 2015 のツールおよびライブラリを使用してアプリケーションをビルドするには、PlatformToolset
プロパティを v140
に設定します。
msbuild myProject.vcxproj /p:PlatformToolset=v140
PreferredToolArchitecture
プロパティ
PreferredToolArchitecture
プロパティは、ビルドで使用されているコンパイラとツールが 32 ビットか 64 ビットかを判定します。 このプロパティは、出力プラットフォームのアーキテクチャや構成には影響しません。 このプロパティが設定されていない場合、MSBuild では、既定でバージョン x86 のコンパイラおよびツールが使用されます。
たとえば、64 ビットのコンパイラおよびツールを使用してアプリケーションをビルドするには、PreferredToolArchitecture
プロパティを x64
に設定します。
msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64
UseEnv
プロパティ
既定では、現在のプロジェクトのプラットフォーム固有設定によって環境変数の PATH
、INCLUDE
、LIB
、LIBPATH
、CONFIGURATION
、PLATFORM
がオーバーライドされます。 環境変数がオーバーライドされないようにするには、UseEnv
プロパティを true
に設定します。
msbuild myProject.vcxproj /p:UseEnv=true
目標値
Visual Studio のサポート ファイル内には、ターゲットが数多く存在します。 ただし、ほとんどはシステム指向のターゲットであり、ユーザーは無視できます。 ほとんどのシステム ターゲットは、先頭にアンダースコア (_
) が付くか、PrepareFor
、Compute
、Before
、After
、Pre
、または Post
で始まる名前が付いています。
ユーザー指向の有用なターゲットを次の表に示します。
移行先 | 説明 |
---|---|
BscMake |
Microsoft Browse Information Maintenance Utility ツール (bscmake.exe ) を実行します。 |
Build |
プロジェクトをビルドします。 このターゲットがプロジェクトの既定です。 |
ClCompile |
MSVC コンパイラ ツール (cl.exe ) を実行します。 |
Clean |
一時ビルド ファイルおよび中間ビルド ファイルを削除します。 |
Lib |
Microsoft 32-Bit Library Manager ツール (lib.exe ) を実行します。 |
Link |
MSVC リンカー ツール (link.exe ) を実行します。 |
ManifestResourceCompile |
マニフェストからリソースの一覧を抽出し、Microsoft Windows リソース コンパイラ ツール (rc.exe ) を実行します。 |
Midl |
Microsoft インターフェイス定義言語 (MIDL: Microsoft Interface Definition Language) コンパイラ ツール (midl.exe ) を実行します。 |
Rebuild |
プロジェクトを消去してからビルドします。 |
ResourceCompile |
Microsoft Windows リソース コンパイラ ツール (rc.exe ) を実行します。 |
XdcMake |
XML ドキュメント ツール (xdcmake.exe ) を実行します。 |
Xsd |
XML スキーマ定義ツール (xsd.exe ) を実行します。 "注記参照。" |
Note
Visual Studio 2017 以降では、C++ プロジェクトでの .xsd
ファイルのサポートは非推奨です。 GAC に手動で CppCodeProvider.dll
を追加することによっても Microsoft.VisualC.CppCodeProvider
は使用できます。
関連項目
MSBuild タスク リファレンス
BscMake
タスク
CL
タスク
CPPClean
タスク
LIB
タスク
Link
タスク
MIDL
タスク
MT
タスク
RC
タスク
SetEnv
タスク
VCMessage
タスク
XDCMake
タスク