每當我想包含一個位於我的項目之外的目錄與Clion時,我將使用-I somedir
標誌。而這一次,我想要做的就是有這樣的層次結構:在Clion中包含目錄
/project
CMakeLists.txt
/src
/Graph
Graph.h
Graph.cpp
/Dijkstra
Dijkstra.h
Dijstra.cpp
我想我在/src
目錄代碼。不僅如此,而且,例如,在文件Dijkstra.h
中,我想包含Graph.h,如下所示:#include "Graph/Graph.h
而不是像這樣:#include "../Graph/Graph.h
。
如果我只添加一個-I src
標誌,那麼如果我是Dijkstra.h
文件裏面,我想包括Graph.h
,我會寫#include "../Graph/Graph.h
,這不是我想要的。
所以我試着還加了INCLUDE_DIRECTORIES(src)
。這解決了上面的問題,但是當試圖編譯時,我得到了一個鏈接器錯誤undefined reference to...
。
所以我嘗試添加的文件一個個像這樣的:
set(SOURCE_FILES
src/Dijkstra/Dijkstra.h
src/Dijkstra/Dijkstra.cpp
src/Graph/Graph.h
src/Graph/Graph.cpp)
add_executable(someprojectname ${SOURCE_FILES})
,並勾起以前的問題,在這裏我必須包括像這樣的文件:#include "../Graph/Graph.h"
。
我該怎麼做才能得到我想要的行爲?
我建議,您使用的目錄結構類似這樣的圖形/ src目錄/ * CPP,圖形/包括/ * .h,Dijkstra/src/*。cpp和Dijkstra/include/*。h ..然後嘗試SET(GRAPH_INCLUDE_DIR Graph/include /),SET(DIJKSTRA_INCLUDE_DIR Dijkstra/include /)INCLUDE_DIRECTORIES($ {GRAPH_INCLUDE_DIR} $ {DIJKSTRA_INCLUDE_DIR}) – Varun
根本不清楚問題。如果使用最後一個變體並添加'include_directories(src/Graph src/Dijkstra)'會發生什麼? – fghj
我建議的方式是製作目錄結構的更好方法。 .cpp放在一個目錄中,而.h文件放在另一個目錄中。爲什麼要在單個目錄中混合這些文件。 – Varun