$(Inherit) と $(NoInherit) の使用方法
更新 : 2007 年 11 月
ここでは、$(Inherit) マクロと $(NoInherit) マクロの使用方法の例を示します。
次の追加インクルード パス (/I) をプロジェクト レベルで設定します。
c:\test
特定のファイルでは、次の追加インクルード パスを設定します。
c:\test2;c:\mystuff
ファイルの [コマンド ライン] プロパティ ページを調べます。次の設定が含まれています。
/I"c:\test2" /I"c:\mystuff" /I"c:\test"
その理由は、$(Inherit) が一覧に明示的に配置されていない場合には、ファイル構成の追加インクルード パスの最後に暗黙の $(Inherit) があるためです。
ファイル構成の追加インクルード パスを次のように変更するとします。
c:\test2;$(Inherit);c:\mystuff
ファイルの [コマンド ライン] プロパティ ページに次のように展開されます。
/I"c:\test2" /I"c:\test" /I"c:\mystuff"
プロジェクト構成の追加インクルード パスに、$(Inherit) マクロが配置されています。$(Inherit) マクロは、このプロパティの一部である継承値の配置をガイドするために使用します。一覧の任意の位置に移動できます。
ファイル構成の追加インクルード パスを次のように変更するとします。
$(Inherit);c:\test2;$(Inherit);c:\mystuff
ファイルの [コマンド ライン] プロパティ ページに次のように展開されます。
/I"c:\test" /I"c:\test2" /I"c:\test" /I"c:\mystuff"
ファイル構成の追加インクルード パスを次のように変更するとします。
c:\test2;c:\mystuff;$(NoInherit)
ファイルの [コマンド ライン] プロパティ ページに次のように展開されます。
/I"c:\test2" /I"c:\mystuff"
プロジェクト構成の /I"c:\test" は消えています。位置に左右される $(Inherit) とは異なり、$(NoInherit) マクロは使用する位置との関連性がありません。
$(NoInherit) は $(Inherit) に優先します。$(NoInherit) が存在する場合、$(Inherit) は無視されます。たとえば、ファイル構成の追加インクルード パスを次のように変更するとします。
c:\test2;$(Inherit);c:\mystuff;$(NoInherit)
この場合、次のように指定された場合とまったく同じに展開されます。
c:\test2;c:\mystuff;$(NoInherit)
C/C++ コンパイラやリンカなどのツールでは、Defines プロパティの $(NoInherit) に注意してください。[ATL の使用] や [MFC の使用] などで設定されたプロジェクトの既定の使用はキャンセルできます。