Freigeben über


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.

Siehe auch

Weitere Ressourcen

Makros für Buildbefehle und -eigenschaften