MSBuild のコマンドとプロパティの共通マクロ

Visual Studio のインストール オプションによっては、MSBuild に基づいた .vcxproj Visual Studio プロジェクトで数百のマクロを使用できるようにすることができます。 マクロは、既定で設定されている MSBuild プロパティ、.props または .targets ファイル内の MSBuild プロパティ、またはお使いのプロジェクトの設定内にある MSBuild プロパティに対応しています。 次のマクロは、プロジェクトの [プロパティ ページ] ダイアログ ボックス内の、文字列を入力できるどの場所にも使用できます。 これらのマクロは大文字と小文字が区別されません。

現在のプロパティとマクロを表示する

現在使用可能なすべてのマクロを表示するには、[プロジェクトプロパティ] を選択してメインメニューからプロジェクト>プロパティページを開きます。 [プロパティ ページ] ダイアログボックス で、マクロが含まれるエントリを選択します。 名前を囲むドル記号とかっこでマクロを認識できます。

たとえば、左側のウィンドウで [構成プロパティ>VC++ ディレクトリ] を選択し、右側のウィンドウで [ディレクトリを含める] を選択します。 Include ディレクトリ値は .$(VC_IncludePath);$(WindowsSDK_IncludePath);

これら 2 つの値を囲むドル記号とかっこは、マクロであることを示します。 これら 2 つのマクロを拡張すると、検索するインクルード ディレクトリが設定されます。

[ディレクトリを含める] を選択すると、行の末尾にドロップダウンが表示されます。 ドロップダウン ボタンを選択し、[編集] を選択 します。 表示される [ディレクトリ含める] ダイアログ ボックスで、[マクロ>>] ボタンを選択します。

ダイアログが展開され、Visual Studio に表示されているプロパティとマクロの現在のセットと、それぞれの現在の値が表示されます。 詳細については、C++ プロジェクトのプロパティ ページのリファレンスユーザー定義の値の指定に関するセクションを参照してください。

Screenshot of the Visual Studio Include Directories dialog after choosing the Macros button.

右側には、$(AllowLocalNetworkLoopback) などの Visual Studio マクロの一覧があります。 左側のウィンドウには、include ディレクトリ プロパティの評価された値が表示されます。 下部のウィンドウには、インクルード ディレクトリ プロパティ値を生成するために展開されたマクロ (存在する場合) が表示されます。 インクルード ディレクトリ マクロは、$(VC_IncludePath) と $(WindowsSDK_IncludePath) という他の 2 つのマクロの組み合わせであるため、下のペインには [継承された値] というラベルが付き、これら 2 つのマクロが一覧表示されます。

一般的なマクロの一覧

次の表は、使用可能なマクロの中でよく使われるサブセットを示しています。ここに示されていないものも多数あります。 [マクロ] ダイアログにアクセスして、プロジェクトのすべてのプロパティとその現在の値を確認してください。 MSBuild プロパティ定義がどのように作成され、.props.targets、および .vcxproj ファイル内でマクロとして使用されるかについて詳しくは、「MSBuild プロパティ」を参照してください。

マクロ 説明
$(Configuration) 現在のプロジェクト構成の名前 ("Debug" など)。
$(DevEnvDir) Visual Studio のインストール ディレクトリ (ドライブ + パスとして定義)。には、末尾の円記号 (\) が含まれます。
$(FrameworkDir) .NET Framework をインストールしたディレクトリです。
$(FrameworkSDKDir) .NET Framework をインストールしたディレクトリです。 .NET Framework は、Visual Studio の一部として、または個別にインストールされている可能性があります。
$(FrameworkVersion) Visual Studio が使用する .NET Framework のバージョンです。 と $(FrameworkDir)組み合わせて、Visual Studio で使用される .NET Framework のバージョンへの完全なパス。
$(FxCopDir) fxcop.cmd ファイルへのパス fxcop.cmd ファイルは、Visual Studio のすべてのエディションにインストールされているとは限りません。
$(IntDir) 中間ファイルに指定されたディレクトリへのパスです。 相対パスの場合、中間ファイルはこのパスを通じてプロジェクト ディレクトリに追加されます。 このパスには、末尾に円記号 (\) を付けます。 これは Intermediate Directory プロパティの値に解決されます。 このプロパティの定義には使用 $(OutDir) しないでください。
$(OutDir) 出力ファイルのディレクトリへのパスです。 相対パスの場合、出力ファイルはこのパスを通じてプロジェクト ディレクトリに追加されます。 このパスには、末尾に円記号 (\) を付けます。 これは、Output Directory プロパティの値に解決されます。 このプロパティの定義には使用 $(IntDir) しないでください。
$(Platform) 現在のプロジェクト プラットフォームの名前 (例: "Win32") です。
$(PlatformShortName) 現在のアーキテクチャの短い名前 ("x86"、"x64" など)。
$(ProjectDir) プロジェクトのディレクトリ (ドライブ + パスとして定義)には、末尾の円記号 (\) が含まれます。
$(ProjectExt) プロジェクトのファイル拡張子。 ファイル拡張子の前にピリオド '.' が付きます。
$(ProjectFileName) プロジェクトのファイル名 (基本名 + ファイル拡張子で定義) です。
$(ProjectName) プロジェクトの基本名です。
$(ProjectPath) プロジェクトの絶対パス名 (ドライブ + パス + 基本名 + ファイル拡張子で定義) です。
$(PublishDir) 発行ターゲットの出力場所。には、末尾の円記号 (\) が含まれます。 既定値は $(OutDir)app.publish\ フォルダーです。
$(RemoteMachine) [デバッグ] プロパティ ページで Remote Machine プロパティの値を設定します。 詳細については、「C/C++ デバッグ構成のプロジェクト設定」を参照してください。
$(RootNameSpace) アプリケーションを含む名前空間 (定義されている場合) です。
$(SolutionDir) ソリューションのディレクトリ (ドライブ + パスとして定義)には、末尾の円記号 (\) が含まれます。 IDE でソリューションをビルドする場合にのみ定義されます。
$(SolutionExt) ソリューションのファイル拡張子です。 ファイル拡張子の前にピリオド '.' が付きます。 IDE でソリューションをビルドする場合にのみ定義されます。
$(SolutionFileName) ソリューションのファイル名 (基本名 + ファイル拡張子で定義) です。 IDE でソリューションをビルドする場合にのみ定義されます。
$(SolutionName) ソリューションの基本名です。 IDE でソリューションをビルドする場合にのみ定義されます。
$(SolutionPath) ソリューションの絶対パス名 (ドライブ + パス + 基本名 + ファイル拡張子で定義) です。 IDE でソリューションをビルドする場合にのみ定義されます。
$(TargetDir) ビルドのプライマリ出力ファイルのディレクトリ (ドライブ + パスとして定義)。には、末尾の円記号 (\) が含まれます。
$(TargetExt) ビルドのプライマリ出力ファイルのファイル拡張子。 ファイル拡張子の前にピリオド '.' が付きます。
$(TargetFileName) ビルドのプライマリ出力ファイルの名前 (基本名 + ファイル拡張子で定義) です。
$(TargetName) ビルドのプライマリ出力ファイルの基本名です。
$(TargetPath) ビルドのプライマリ出力ファイルの絶対パス名 (ドライブ + パス + 基本名 + ファイル拡張子で定義) です。
$(VCInstallDir) Visual Studio インストールの C++ コンテンツを格納するディレクトリ。 このプロパティにはターゲットの Microsoft C++ (MSVC) ツールセットのバージョンが含まれますが、ホストの Visual Studio とは異なることがあります。 たとえば、$(PlatformToolset) = v140 を設定してビルドした場合、$(VCInstallDir) には Visual Studio 2015 インストールへのパスが含まれます。
$(VSInstallDir) Visual Studio をインストールしたディレクトリです。 このプロパティにはターゲットの Visual Studio ツールセットのバージョンが含まれますが、ホストの Visual C++ とは異なることがあります。 たとえば、$(PlatformToolset) = v110 を設定してビルドした場合、$(VSInstallDir) には Visual Studio 2012 インストールへのパスが含まれます。
$(WebDeployPath) Web 配置のルートから、プロジェクト出力が存在するディレクトリへの相対パスです。
$(WebDeployRoot) <localhost> の場所への絶対パスです。 たとえば、c:\inetpub\wwwroot のようにします。

古いマクロ

C++ のビルド システムは、Visual Studio 2008 と Visual Studio 2010 の間で大幅に変更されました。 以前のプロジェクトの種類で使用された多くのマクロが新しいものに変更されました。 これらのマクロは使用されなくなったか、1 つ以上の同等のプロパティまたは 項目メタデータ マクロ (%(item-name)) 値に置き換えられます。 移行ツールでは、"移行済み" とマークされたマクロを更新できます。 マクロを含むプロジェクトが Visual Studio 2008 以前から Visual Studio 2010 に移行された場合、Visual Studio はそのマクロを同等の現在のマクロに変換します。 新しいバージョンの Visual Studio は、プロジェクトを Visual Studio 2008 以前から新しいプロジェクトの種類に変換できません。 2 つの手順でこれらのプロジェクトを変換する必要があります。まず Visual Studio 2010 に変換し、Visual Studio の新しいバージョンにその結果を変換します。 詳細については、「Overview of potential upgrade issues」 (アップグレードの潜在的な問題の概要) を参照してください。

マクロ 説明
$(InputDir) (移行済み)。入力ファイルのディレクトリ (ドライブ + パスとして定義)。には、末尾の円記号 (\) が含まれます。 プロジェクトが入力の場合、このマクロは $(ProjectDir).
$(InputExt) (移行済み)。入力ファイルのファイル拡張子。 ファイル拡張子の前にピリオド '.' が付きます。 プロジェクトが入力の場合、このマクロは $(ProjectExt). ソース ファイルの場合は、%(Extension) と同じです。
$(InputFileName) (移行済み)。入力ファイルのファイル名 (ベース名 + ファイル拡張子として定義)。 プロジェクトが入力の場合、このマクロは $(ProjectFileName). ソース ファイルの場合は、%(Identity) と同じです。
$(InputName) (移行済み)。入力ファイルのベース名。 プロジェクトが入力の場合、このマクロは $(ProjectName). ソース ファイルの場合は、%(Filename) と同じです。
$(InputPath) (移行済み)。入力ファイルの絶対パス名 (ドライブ + パス + ベース名 + ファイル拡張子として定義)。 プロジェクトが入力の場合、このマクロは $(ProjectPath). ソース ファイルの場合は、%(FullPath) と同じです。
$(ParentName) このプロジェクト項目を含む項目の名前です。 これは、親フォルダー名またはプロジェクト名です。
$(SafeInputName) 有効なクラス名としてのファイル名です。ファイル拡張子は除きます。 このプロパティには、正確に等しいものはありません。
$(SafeParentName) 有効な名前形式で指定された、直接の親の名前です。 たとえば、フォームは .resx ファイルの親です。 このプロパティには、正確に等しいものはありません。
$(SafeRootNamespace) プロジェクト ウィザードでコードを追加する名前空間の名前。 この名前空間名に含まれるのは、有効な C++ 識別子で許可される文字列だけです。 このプロパティには、正確に等しいものはありません。

関連項目

Visual Studio プロジェクト - C++
Visual C++ 移植とアップグレードのガイド
アップグレード時の潜在的な問題の概要
MSBuild の既知の項目メタデータ