每当我想在Clion中包含一个位于我项目之外的目录时,我就会使用该-I somedir标志.但是这一次,我想做的是拥有这样的层次结构:
/project
CMakeLists.txt
/src
/Graph
Graph.h
Graph.cpp
/Dijkstra
Dijkstra.h
Dijstra.cpp
Run Code Online (Sandbox Code Playgroud)
我想把我的代码放在一个/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})
Run Code Online (Sandbox Code Playgroud)
这带回了以前的问题,我必须包含这样的文件:#include "../Graph/Graph.h".
我怎样才能正确地做到这一点才能得到我想要的行为?
命令INCLUDE_DIRECTORIES 不添加任何的源文件进行编译!
相反,此命令定义搜索头文件的目录.
在任何情况下,您都需要列出调用中的所有源文件add_executable():
include_directories(src)
set(SOURCE_FILES
src/Dijkstra/Dijkstra.cpp
src/Graph/Graph.cpp)
add_executable(someprojectname ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12089 次 |
| 最近记录: |