Verwenden von "$(Inherit)" und "$(NoInherit)"
Aktualisiert: November 2007
Dieses Thema enthält einige Beispiele zur Verwendung des $(Inherit)-Makros und des $(NoInherit)-Makros.
Legen Sie den folgenden zusätzlichen Includepfad (/I) auf Projektebene fest:
c:\test
Legen Sie bei bestimmten Dateien den folgenden zusätzlichen Includepfad fest:
c:\test2;c:\mystuff
Achten Sie auf die Eigenschaftenseite Befehlszeile der Datei. Sie enthält:
/I"c:\test2" /I"c:\mystuff" /I"c:\test"
Dies liegt daran, dass am Ende der zusätzlichen Includepfade der Dateikonfiguration ein implizites $(Inherit) enthalten ist, wenn $(Inherit) nicht explizit in der Liste platziert ist.
Wenn Sie jedoch den zusätzlichen Includepfad der Dateikonfiguration wie folgt ändern:
c:\test2;$(Inherit);c:\mystuff
wird er auf der Eigenschaftenseite Befehlszeile der Datei in folgenden Pfad erweitert:
/I"c:\test2" /I"c:\test" /I"c:\mystuff"
Beachten Sie, dass der zusätzliche Includepfad aus der Projektkonfiguration an der Stelle steht, an der das $(Inherit)-Makro platziert wurde. Das $(Inherit)-Makro steuert die Platzierung geerbter Werte, die Teil dieser Eigenschaft sind. Es kann an einer beliebigen Stelle in der Liste stehen.
Wenn Sie den zusätzlichen Includepfad der Dateikonfiguration wie folgt ändern:
$(Inherit);c:\test2;$(Inherit);c:\mystuff
wird er auf der Eigenschaftenseite Befehlszeile der Datei in folgenden Pfad erweitert:
/I"c:\test" /I"c:\test2" /I"c:\test" /I"c:\mystuff"
Wenn Sie den zusätzlichen Includepfad der Dateikonfiguration wie folgt ändern:
c:\test2;c:\mystuff;$(NoInherit)
wird er auf der Eigenschaftenseite Befehlszeile der Datei in folgenden Pfad erweitert:
/I"c:\test2" /I"c:\mystuff"
Der Pfad /I"c:\test" ist jetzt in der Projektkonfiguration nicht mehr enthalten. Die Position des $(NoInherit)-Makros hat im Unterschied zum positionsabhängigen $(Inherit)-Makro keinen Einfluss auf seine Verwendungsweise.
$(NoInherit) hat Vorrang vor $(Inherit). Wenn $(NoInherit) vorhanden ist, wird $(Inherit) ignoriert. Beim Ändern des zusätzlichen Includepfads der Dateikonfiguration in folgenden Pfad:
c:\test2;$(Inherit);c:\mystuff;$(NoInherit)
wird der Pfad genauso erweitert als würde er folgendermaßen lauten:
c:\test2;c:\mystuff;$(NoInherit)
Besondere Sorgfalt verlangt die Verwendung von $(NoInherit) in der Defines-Eigenschaft für Tools wie C/C++-Compiler oder -Linker. In diesem Fall kann die Verwendung von Projektstandards (z. B. die durch Verwendung von ATL und Verwendung von MFC festgelegten Einstellungen) umgangen werden.