Immer wenn ich ein Verzeichnis, das außerhalb von meinem Projekt mit Clion befand, wollte ich das -I somedir
Flag verwenden. Dieses Mal jedoch, was ich tun möchte, ist eine Hierarchie wie diese hat:Einschließlich Verzeichnisse in Clion
/project
CMakeLists.txt
/src
/Graph
Graph.h
Graph.cpp
/Dijkstra
Dijkstra.h
Dijstra.cpp
ich meinen Code will in einem /src
Verzeichnis. Und nicht nur das, sondern auch, zum Beispiel, in der Datei Dijkstra.h
möchte ich die Graph.h wie folgt einfügen: #include "Graph/Graph.h
und nicht wie folgt: #include "../Graph/Graph.h
.
Wenn ich nur einen -I src
Flag hinzuzufügen, dann, wenn ich in der Dijkstra.h
Datei bin und ich wollte Graph.h
aufzunehmen, würde ich #include "../Graph/Graph.h
schreiben muß, was nicht das, was ich will.
Also habe ich versucht, auch INCLUDE_DIRECTORIES(src)
hinzuzufügen. Das hat das Problem oben behoben, aber als ich versucht habe zu kompilieren, habe ich einen Linkerfehler undefined reference to...
.
Also habe ich versucht, die Dateien nacheinander wie folgt ergänzt:
set(SOURCE_FILES
src/Dijkstra/Dijkstra.h
src/Dijkstra/Dijkstra.cpp
src/Graph/Graph.h
src/Graph/Graph.cpp)
add_executable(someprojectname ${SOURCE_FILES})
und dass das bisherige Problem zurückgebracht, wo ich die Dateien wie diese gehören musste: #include "../Graph/Graph.h"
.
Wie kann ich das richtig machen, um das gewünschte Verhalten zu erhalten?
würde ich vorschlagen, Sie Verzeichnisstruktur wie dieser Graph/src/* verwenden cav, Grafik/include/* .h, Dijkstra/src/* .cpp und Dijkstra/include/*. h .. Dann versuchen SET (GRAPH_INCLUDE_DIR Graph/include /), SET (DIJKSTRA_INCLUDE_DIR Dijkstra/include /) INCLUDE_DIRECTORIES ($ {GRAPH_INCLUDE_DIR} $ {DIJKSTRA_INCLUDE_DIR}) – Varun
Keine klare Frage überhaupt. Wenn Sie die letzte Variante verwenden und 'include_directories (src/Graph src/Dijkstra) hinzufügen, was passiert? – fghj
Die Art und Weise, die ich vorgeschlagen habe, ist eine bessere Möglichkeit, Verzeichnisstruktur zu erstellen. .cpp in einem Verzeichnis und .h-Datei in einem anderen Verzeichnis. Warum diese Dateien in einem einzelnen Verzeichnis mischen. – Varun