Was ist der Unterschied zwischen "Verzeichnisse einschließen" und "Zusätzliche Verzeichnisse einschließen"?

94

In den Konfigurationseigenschaften meines Projekts befindet sich unter "VC ++ - Verzeichnisse" ein Eintrag für "Verzeichnisse einschließen". Unter der Option "C / C ++" gibt es jedoch einen weiteren Eintrag mit dem Namen "Additional Include Directories". Gleiches passiert mit Bibliotheksverzeichnissen.

Was ist der Unterschied zwischen diesen beiden Einträgen?

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Artium
quelle

Antworten:

48

Dies ist eine Unbeholfenheit, die in VS2010 eingeführt wurde. Die Einstellungen für VC ++ - Verzeichnisse befanden sich früher unter Extras + Optionen, Projekte und Lösungen, VC ++ - Verzeichnisse. Globale Einstellungen, die für jedes Projekt gelten, das auf dem Computer erstellt wurde. Es ist immer noch da, weist aber darauf hin, dass Sie es jetzt in Ihren Projekteinstellungen ändern sollten. Ein Nebeneffekt der Überarbeitung der Build-Engine in VS2010, die das Erstellen mit msbuild ermöglicht. Das Entfernen der Einstellungen pro Projekt wäre logisch gewesen, aber das würde zu viele vorhandene Projekte zerstören.

Daher ist es wahrscheinlich am besten, die VC ++ - Verzeichniseinstellungen als Standardeinstellung des Computers zu behandeln. Sie wird vom VS-Installationsprogramm automatisch voreingestellt. Basteln Sie nur daran, wenn Sie eine ungewöhnliche Verzeichnissuchreihenfolge benötigen, wobei die benutzerdefinierten Speicherorte zuletzt angegeben werden. Sehr ungewöhnlich.

Es funktioniert jedoch. Und es wurde schließlich ausgenutzt. Aktivieren der Platform Toolset-Einstellung in VS2012 und höher. Unterschiedlicher Compiler, unterschiedlicher Linker, unterschiedliche # include-Verzeichnisse, unterschiedlicher Linker-Suchpfad. Mit nur einer Einstellung geändert, schön.

Hans Passant
quelle
3
Hmmm ... Es ist wahr, dass die gloabl-Optionen darunter gespeichert werden - aber dies ist das Eigenschaftenblatt Microsoft.Cpp.Win32.userund nur dies. Wenn Sie den Eintrag "VC ++ - Verzeichnisse" bearbeiten, während das Projekt oder ein anderes Eigenschaftenblatt aktiv ist, bleibt die Änderung in der .vcxprojDatei oder in der jeweiligen .propsDatei erhalten und ist weder global noch benutzerweit.
Martin Ba
25

Die Include-Verzeichnisse entsprechen der Umgebungsvariablen INCLUDE.

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

Während die zusätzlichen Include-Verzeichnisse über ein Befehlszeilenargument (dh die \IOption) übergeben werden.

CodeNaked
quelle
19

KONFIGURIEREN EINSCHLIESSLICHER WEGE

VC ++ - Verzeichnisse: Verzeichnisse einschließen

  • Dieser Wert wird von der INCLUDE Windows- Umgebungsvariablen geerbt, die außerhalb von Visual Studio definiert ist
    • Umgebungsvariablen können: global für den Computer sein oder einen Bereich auf Benutzerebene haben
    • Die INCLUDEund LIBUmgebungsvariablen werden erstellt, wenn das Microsoft Windows SDK mit Visual Studio installiert wird .

C / C ++: Zusätzliche Include-Verzeichnisse

  • ist eine Einstellung auf Projektebene ... Sie müssen diesen Wert für jedes Projekt in Ihrer Lösung definieren
  • Dieser Wert kann für die Quellcodeverwaltung beibehalten werden

ZUSÄTZLICHE BEMERKUNGEN

Welches soll ich verwenden?

Die Entscheidung, Include-Verzeichnisse oder zusätzliche Include-Verzeichnisse zu verwenden , hängt vom Entwicklungsprozess Ihres Unternehmens ab. Meiner Meinung nach ist es wichtiger:

  • dass Sie in der Lage sind, die Entwicklungsumgebung konsistent und zuverlässig neu zu erstellen (denken Sie daran: Übergeben des Quellcodes an einen anderen Entwickler)
  • Verwenden Sie für Entwickler innerhalb einer Organisation einen konsistenten Ansatz

Ein Hinweis zu Makros

  • Die C ++ Projektkonfiguration Makros (nicht mit C verwechselt werden ++ Pre-Prozessor - #defineRichtlinie) vererben Inhalte aus verschiedenen Quellen. Makros wie ...
    • $(Include)erben ihre Werte von Windows- Umgebungsvariablen
    • $(OutDir)erben ihre Werte von Visual Studio IDE

VERWEISE

Pressacco
quelle