使用 $(Inherit) 和 $(NoInherit)

更新:2007 年 11 月

這個主題提供了一些有關如何使用 $(Inherit)$(NoInherit) 巨集的範例。

  • 請在專案等級設定下列其他 Include 路徑 (/I):

    c:\test
    
  • 對於特定的檔案,請設定下列其他 Include 路徑:

    c:\test2;c:\mystuff
    
  • 請觀察檔案的 [命令列] 屬性頁。它包括:

    /I"c:\test2" /I"c:\mystuff" /I"c:\test"
    

    這是因為如果 $(Inherit) 沒有明確地放在清單中的話,在檔案組態的其他 Include 路徑結尾會有一個隱含 $(Inherit)。

  • 但是,如果您將檔案組態的其他 Include 路徑變更為下列:

    c:\test2;$(Inherit);c:\mystuff
    

    它會在檔案的 [命令列] 屬性頁上展開為下列:

    /I"c:\test2" /I"c:\test" /I"c:\mystuff"
    

    請注意,專案組態的 Include 路徑也就是放置 $(Inherit) 巨集的地方。$(Inherit) 巨集是用來引導這項屬性之一部分的繼承值的位置。它可以放在清單中的任何位置。

  • 如果您將檔案組態的其他 Include 路徑變更為下列:

    $(Inherit);c:\test2;$(Inherit);c:\mystuff
    

    它會在檔案的 [命令列] 屬性頁上展開為下列:

    /I"c:\test" /I"c:\test2" /I"c:\test" /I"c:\mystuff"
    
  • 如果您將檔案組態的其他 Include 路徑變更為下列:

    c:\test2;c:\mystuff;$(NoInherit)
    

    它會在檔案的 [命令列] 屬性頁上展開為下列:

    /I"c:\test2" /I"c:\mystuff"
    

    請注意專案組態中的 /I"c:\test" 不見了。$(NoInherit) 巨集的位置與如何使用它無關,而 $(Inherit) 則必須區分位置。

$(NoInherit) 的優先等級比 $(Inherit) 來得高。如果 $(NoInherit) 存在的話,$(Inherit) 將會被忽略。例如,將檔案組態的其他 Include 路徑變更為下列:

c:\test2;$(Inherit);c:\mystuff;$(NoInherit)

它展開的情況將會與下列路徑展開後完全相同:

c:\test2;c:\mystuff;$(NoInherit)

對於 C/C++ 編譯器或連結器這類工具,請小心 Defines 屬性中的 $(NoInherit),一不注意就可能會取消專案預設值 (例如由 [ATL 用法] 和 [MFC 用法] 所設定者) 的使用。

請參閱

其他資源

建置命令和屬性的巨集