每当我想在Clion项目中包含位于项目外部的目录时,我会使用-I somedir
标志。然而,这一次,我想要实现这样的层次结构:
/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"
。
我该如何正确地做到我想要的行为?
include_directories(src / Graph src / Dijkstra)
,会发生什么? - fghj