Всякий раз, когда я хотел включить каталог, который находился за пределами моего проекта с 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)
, что произойдет? - person fghj   schedule 27.04.2016