Wie definiere ich relative Pfade in Visual Studio Project?

Lesezeit: 4 Minuten

Benutzeravatar von Ali Ahmed
Ali Ahmed

Ich habe eine Bibliothek und eine Konsolenanwendung, die eine Bibliothek verwendet. Die Bibliothek hat einen Ordner mit Quell- und Header-Dateien.

Mein Projekt befindet sich in einem untergeordneten/inneren Verzeichnis, aber das Bibliotheksverzeichnis, das ich einschließen möchte, befindet sich in einem übergeordneten/oberen Verzeichnis.

Mein Projektverzeichnis:

H:\Gmail_04\gsasl-1.0\lib\libgsaslMain

Enthält Dateien sind hier:

H:\Gmail_04\gsasl-1.0\src

Wie kann ich Pfade relativ zum Projektverzeichnis verwenden, um Ordner einzuschließen, die sich in einem übergeordneten/oberen Verzeichnis befinden?

Benutzeravatar von eckes
Ecken

Anstatt relative Pfade zu verwenden, könnten Sie auch die vordefinierten Makros von VS verwenden, um dies zu erreichen.

$(ProjectDir) zeigt auf das Verzeichnis Ihrer .vcproj Datei, $(SolutionDir) ist das Verzeichnis der .sln Datei.

Eine Liste der verfügbaren Makros erhalten Sie beim Öffnen eines Projekts, gehen Sie zu
Eigenschaften → Konfigurationseigenschaften → C/C++ → Allgemein

und drücke die drei Punkte:

Projekteigenschaften

Klicken Sie im folgenden Dialog auf Makros um die Makros zu sehen, die von Studio vordefiniert sind (siehe MSDN für ihre Bedeutung):

zusätzliche include-Verzeichnisse

Sie können die Makros verwenden, indem Sie sie eingeben $(MACRO_NAME) (beachten Sie das $ und die runden Klammern).

  • Beachten Sie, dass dies der Fall ist runde Klammern ( ), nicht geschwungene Klammern { }. Ich versuche seit fünfzehn Minuten fälschlicherweise, Makros mit letzterem zu verwenden.

    – Hazer

    22. Januar 2016 um 6:27 Uhr


  • @hauzer: Danke für den Hinweis. Ich habe Ihren Kommentar in meine Antwort aufgenommen.

    – eckes

    22. Januar 2016 um 6:31 Uhr

  • Gibt es ein C#-Projektäquivalent?

    – Chiramisu

    22. Februar 2020 um 0:21 Uhr

  • @Chiramisu Ich denke, die Variablen sind dort gleich? Siehe stackoverflow.com/a/830307.

    – eckes

    22. Februar 2020 um 6:09 Uhr

  • Gibt es eine Codierungsrichtlinie von MS, die empfiehlt, den Pfad zu Visual Studio einzuschließen, anstatt den relativen Pfad einzuschließen?

    – Mayur

    6. August 2021 um 16:46 Uhr

Wenn ich dich richtig verstehe, brauchst du ..\..\src

  • Ich habe das versucht … aber es heißt, dass die Include-Datei in diesem Ordner nicht gefunden werden kann. aber wenn ich den vollständigen Pfad gebe, funktioniert es gut.

    – Ali Ahmed

    1. August 2011 um 7:43 Uhr

  • Vielleicht ist das Projektverzeichnis nicht das, was Sie denken? Vielleicht ist es eine Stufe tiefer?

    – MByD

    1. August 2011 um 7:45 Uhr

  • Wenn dies der Fall ist, was soll ich tun? Was sollte der Pfad sein, wenn Sie mit dem Projektverzeichnis Recht haben?

    – Ali Ahmed

    1. August 2011 um 7:49 Uhr

  • ..\..\..\src jeder .. geht ein Verzeichnis zurück.

    – MByD

    1. August 2011 um 7:50 Uhr

  • Wo stellt man das hin? Welche Flags übergebe ich an die link Befehl für den Linker?

    – Aaron Franke

    21. April 2021 um 4:10 Uhr


Benutzeravatar von yvan vander sanden
Yvan Vander Sanden

Ich habe eine Syntax wie diese zuvor verwendet:

$(ProjectDir)..\headers

oder

..\headers

Wie andere bereits betont haben, ist das Startverzeichnis dasjenige, in dem sich Ihre Projektdatei befindet (vcproj oder vcxproj), nicht dort, wo sich Ihr Hauptcode befindet.

  • Es scheint in VS2013 Update 3 wieder gut zu funktionieren, bei U2 und U1 bin ich mir nicht sicher.

    – iFreilicht

    27. Oktober 2014 um 13:00 Uhr

  • Sollte ($ProjectDir) nicht $(ProjectDir) sein?

    – Anti-eindeutigminzig

    25. Januar 2015 um 15:06 Uhr

  • Gute Antwort. Getestet auf Microsoft Visual Studio Community 2017.

    – Joma

    21. Mai 2018 um 3:57 Uhr

  • Klicken Sie auf “Übernehmen” und überprüfen Sie dann in der ‘Linker->Befehlszeile’, ob die generierten absoluten Pfade korrekt sind.

    – Anton Andrejew

    10. April 2019 um 8:49 Uhr

  • Funktioniert nicht mit zugeordneten Netzlaufwerken, dann müssen Sie den Pfad anscheinend fest codieren!

    – Auswurf

    31. Juli 2019 um 9:39 Uhr

Benutzeravatar von Michael Haephrati
Michael Häphrati

Standardmäßig sind alle von Ihnen definierten Pfade relativ. Die Frage ist: relativ zu was? Es gibt mehrere Optionen:

  1. Angeben einer Datei oder eines Pfads ohne etwas davor. Zum Beispiel: “mylib.lib“. In diesem Fall wird die Datei am gesucht Ausgabe Verzeichnis.
  2. Wenn Sie „..\“ hinzufügen, wird der Pfad aus dem tatsächlichen Pfad berechnet, in dem sich die .sln-Datei befindet.

Bitte beachten Sie, dass nach einem Makro wie $(SolutionDir) kein Backslash “\” hinzugefügt werden muss. Benutz einfach $(SolutionDir)mylibdir\mylib.lib. Falls Sie es einfach nicht zum Laufen bringen können, öffnen Sie die Projektdatei extern von Notepad und überprüfen Sie sie.

Es gibt ein paar Tipps, die Sie wissen müssen.

Bedenken Sie, dass Ihre App unter c:\MyRepository\MyApp ausgeführt wird

Ein einzelner Punkt auf Ihrem Pfad bedeutet den Ordner, in dem Ihre App ausgeführt wird. Wenn Sie also auf einen Ordner oder eine Datei im MyApp-Ordner zugreifen möchten (stellen Sie sich c:\MyRepository\MyApp\Resources\someText.txt vor), können Sie dies so tun var bla = File.Exists(./Resources/someText.txt)

und Sie können mit doppelten Punkten (..) eine Ebene nach oben gehen. Denken Sie an einen Ordner unter c:\MyRepository\SomeFolder\sometext.txt für MyApp, es wird so aussehen
var bla = File.Exists(../SomeFolder/someText.txt)

und es ist möglich, 2,3,4.. Ebenen nach oben zu gehen

../../SomeFolder (2 Ebenen höher)

../../../SomeFolder (3 Ebenen höher)

und Pfad, der ohne Punkte beginnt, bedeutet den Laufwerksstamm. var bla = File.Exists(/SomeFolder/someText.txt) sucht in unserem Szenario nach c:\SomeFolder\someText.txt.

1416440cookie-checkWie definiere ich relative Pfade in Visual Studio Project?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy