Include Anweisungen

CopWorker

Erfahrenes Mitglied
Hallo,

Ich habe seit kurzem ein Problem.
In meinem C++ - Projekt gibt es viele include-Anweisungen, die auf eine Header-Datei außerhalb des Projektverzeichnisses verweisen.
Das Projekt wurde in Visual Studio 2013 erstellt.

Jetzt habe ich das Projekt in Visual Studio 2017 konvertiert. Und diese Referenzen sind nicht mehr zulässig.
Kann mir jemand erklären, wie das jetzt in Visual Studio 2017 funktioniert?

Hier die Syntax:
C++:
#include "\abc2000_VST2013\Source\KomUC\Global.h"
Compilerfehler: Cannot find directory "abc2000_VST2013" in search paths:

Danke für die Hilfe
Fujitsufan
 

ComFreek

Mod | @comfreek
Moderator
Das ist aber ein komischer Pfad unter Windows. Soll das ein absoluter Pfad sein? Wenn ja, fangen die auf Windows normalerweise mit einem Drive-Buchstaben an (C:\...\, außer Netzwerkpfade).
 

CopWorker

Erfahrenes Mitglied
Hallo ComFreek,

da hast du recht mit dem absoluten Pfad.
Hierbei handelt es sich aber um einen relativen Pfad,
bezogen auf die Visual Studio Projektdatei.

Das Projekt habe ich vor kurzem übernommen.
Es wurde schon unter Visual Studio 2005 bearbeitet
und zuletzt unter Visual Studio 2013, und läuft bestens.

Frage: Akzeptiert Visual Studio 2017 die relativen Pfade überhaupt noch?


Vielen Dank für die Hilfe
CopWorker
 

ComFreek

Mod | @comfreek
Moderator
Warum übernimmst du das Projektverzeichnis nicht einfach in die Includepfade in den Projekteinstellungen?

Dann würde ich beim Pfad aber auch den führenden Backslash \ entfernen - auch wenn es mit \ funktioniert.
 

CopWorker

Erfahrenes Mitglied
Hallo ComFreek,

gerade das ist der Punkt an dem ich vom Glauben abfalle.
Das habe ich als erstes versucht.
Den Verzeichnispfad in den Projekteinstellung als "%(AdditionalUsingDirectories)" deklarieren.
G e h t n i c h t !!! Siehe "VS2017_Project_Include-Paths2.PNG" VS2017_Project_Include-Paths2.PNG

Vielen Dank
CopWorker
 

ComFreek

Mod | @comfreek
Moderator
Wieso trägst du das unter #using ein? Trag das unter "Additional Include Directories" ein mittels Variablen. Der Dialog sollte dir helfen die richtige zu wählen, etwa $(ProjectDirectory) oder so. Außerdem tätige die Einstlelung für alle Configurations und alle Plattformen, d.h. wähle zuerst unter Configurations und unter Platform "all" aus und ändere erst dann die Include Directories.
 

CopWorker

Erfahrenes Mitglied
Hallo ComFreek,

ganz einfach. Weil das in ähnlichen Projekten, die ich übernommen habe, auch so drin ist.
Zumindest in Projekt bis VS2013.
Und zudem wird im Dialog mit den Verzeichnis-Browser immer ein absoluter Pfad erstellt.
Das wollte ich eigentlich vermeiden.
Die Projekte sollen von mehreren Arbeitsstationen aus bearbeitet werden.
Nicht an jeder Arbeitsstation gelten die gleichen Pfadeinstellung an denen
die Projekte verwaltet werden.

Die große Preisfrage ist jetzt: Was hat sich in Hinsicht von VS2013 zu VS2017 geändert,
dass dies nicht mehr so funktioniert mit den relativen Pfaden?

Muss ich weiter regergieren.
Aber trotzdem vielen Dank.

Wann du was in Erfahrung bringst, kannst du dich gerne bei mir melden.

CopWorker
 

ComFreek

Mod | @comfreek
Moderator
Die Projekte sollen von mehreren Arbeitsstationen aus bearbeitet werden.
Nicht an jeder Arbeitsstation gelten die gleichen Pfadeinstellung an denen
die Projekte verwaltet werden.
Genau für solche Anwendungsfälle sind ja Variablen auch gedacht.

Und zudem wird im Dialog mit den Verzeichnis-Browser immer ein absoluter Pfad erstellt.
Deswegen nutze Variablen, ggf. musst du die manuell eingeben.

Klappt es nun mit dem, was ich im vorherigen Beitrag beschrieben habe?
 

CopWorker

Erfahrenes Mitglied
Die $(ProjectDir) habe ich, aber wie geht´s von da an weiter?
$(ProjectDir)\....\abc2000_VST2013\Source\KomUC;%(AdditionalIncludeDirectories)

Frage: Kann ich überhaupt vom Projektverzeichnis rückwärts rooten?
 

ComFreek

Mod | @comfreek
Moderator
Ich kenn dein Ordnerlayou ja nciht. Wieso enthält dein Pfad 4 Punkte nacheinander? Wie sieht die C++-Datei nun aus? Ja, du kannst rückwärts routen.