124 Stimmen

Was ist der Unterschied zwischen "Include-Verzeichnissen" und "Zusätzlichen Include-Verzeichnissen"?

In den Konfigurationseigenschaften meines Projekts gibt es unter den "VC++-Verzeichnissen" einen Eintrag für "Include-Verzeichnisse". Aber unter der Option "C/C++" gibt es einen weiteren Eintrag namens "Zusätzliche Include-Verzeichnisse". Das Gleiche geschieht bei den Bibliotheksverzeichnissen.

Was sind die Unterschiede zwischen diesen beiden Einträgen?

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

55voto

Hans Passant Punkte 894572

Dies ist eine Unbeholfenheit, die in VS2010 eingeführt wurde. Die VC++-Verzeichniseinstellungen waren früher unter "Tools + Optionen, Projekte und Lösungen, VC++-Verzeichnisse" zu finden. Globale Einstellungen, die für jedes auf dem Computer erstellte Projekt gelten. Es ist immer noch da, weist jedoch darauf hin, dass Sie es jetzt in Ihren Projekteinstellungen ändern sollten. Eine Nebenwirkung der Überarbeitung des Build-Systems in VS2010, das das Erstellen mit msbuild aktiviert. Das Entfernen der projektspezifischen Einstellungen wäre logisch gewesen, aber das würde zu viele bestehende Projekte beeinträchtigen.

Daher ist es wahrscheinlich am besten, die VC++-Verzeichniseinstellungen als Standardwert für den Computer zu behandeln. Es wird automatisch vom VS-Installer voreingestellt. Ändern Sie es nur, wenn Sie eine ungewöhnliche Verzeichnissuchreihenfolge benötigen und die benutzerdefinierten Standorte zuletzt platzieren möchten. Sehr ungewöhnlich, dies zu tun.

Es funktioniert jedoch. Und es wurde schließlich genutzt. Die Plattform-Toolset-Einstellung in VS2012 und höher wurde gestärkt. Verschiedener Compiler, unterschiedliche Linker, unterschiedliche #include-Verzeichnisse, unterschiedlicher Linker-Suchpfad. Geändert mit nur einer Einstellung, gut.

4 Stimmen

Hmmm ... Es ist wahr, dass die globalen Optionen unter diesem gespeichert werden - aber dies ist das Eigenschaftenblatt Microsoft.Cpp.Win32.user und nur dieses. Wenn Sie den Eintrag "VC++ Directories" bearbeiten, wenn das Projekt aktiv ist oder ein anderes Eigenschaftenblatt haben, wird die Änderung in der Datei .vcxproj oder in der entsprechenden .props Datei gespeichert und ist überhaupt nicht global oder benutzerweit.

33voto

Pressacco Punkte 2666

KONFIGURATION VON EINSCHLIEßPFADEN

VC++ Verzeichnisse: Einschließen-Verzeichnisse

  • Dieser Wert wird vom INCLUDE Windows-Umgebungsvariablen geerbt, die außerhalb von Visual Studio definiert ist.
    • Umgebungsvariablen können global für den Computer sein oder einen Benutzerbereich haben
    • Die INCLUDE und LIB Umgebungsvariablen werden erstellt, wenn das Microsoft Windows SDK mit Visual Studio installiert wird.

C/C++: Zusätzliche Einschließen-Verzeichnisse

  • ist eine Projektebene-Einstellung... Sie müssen diesen Wert für jedes Projekt in Ihrer Lösung definieren
  • Dieser Wert kann in der Versionskontrolle gespeichert werden

ZUSÄTZLICHE HINWEISE

Welches sollte ich verwenden?

Die Entscheidung, ob Sie Einschließen-Verzeichnisse oder Zusätzliche Einschließen-Verzeichnisse verwenden sollten, hängt von Ihrem Organisationsentwicklungsprozess ab. Meiner Meinung nach ist es wichtiger:

  • dass Sie die Entwicklungsumgebung konsistent und zuverlässig wiederherstellen können (denken Sie daran: Code an einen anderen Entwickler weitergeben)
  • dass Entwickler innerhalb einer Organisation ein einheitliches Vorgehen verwenden

Eine Anmerkung zu Makros

  • Die C++ Projekt-Konfiguration Makros (nicht zu verwechseln mit der C++ Präprozessor #define Direktive) erben Inhalte aus verschiedenen Quellen. Makros wie...
    • $(Einschließen) erben ihre Werte von Windows-Umgebungsvariablen
    • $(OutDir) erben ihre Werte von der Visual Studio IDE

QUELLEN

30voto

CodeNaked Punkte 39375

Die Include-Verzeichnisse entsprechen der Umgebungsvariable INCLUDE.

Die im Fenster angezeigten Verzeichniseinstellungen sind die Verzeichnisse, nach denen Visual Studio nach Include-Dateien sucht, auf die in Ihren Quelldateien verwiesen wird. Entspricht der Umgebungsvariable INCLUDE.

Während die Zusätzlichen Include-Verzeichnisse über ein Befehlszeilenargument übergeben werden (d.h. die Option \I).

10voto

Zhang Punkte 2460

Was ist der Unterschied zwischen #include <filename> und #include "filename"?

"Include Directories" -> #include <header>

"Additional Include Directories" -> #include "header"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X