Я совершенно новичок в CMake
.У меня есть проект со следующей структурой.Для более ясного объяснения я буду использовать некоторые псевдонимы для CMakeLists.txt
файлов:
- lib
|-- sub
|-- example_lib.cpp
|-- example_lib.hpp
|-- CMakeLists.txt (alias: cmake_lib)
- src
|-- main.cpp
|-- CMakeLists.txt (alias: cmake_src)
- CMakeLists.txt (alias: cmake_root)
Мои CMakeLists.txt
файлы содержат следующее:
cmake_root
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
set(EXE_NAME example)
set(LIB_MODULE lib)
project(${EXE_NAME})
add_subdirectory (lib)
add_subdirectory (src)
cmake_lib
set(LIB_SOURCES
sub/example_lib.hpp
sub/example_lib.cpp)
add_library(${LIB_MODULE} ${LIB_SOURCES})
cmake_src
set(SOURCES
main.cpp)
include_directories ("${PROJECT_SOURCE_DIR}/lib")
add_executable(${EXE_NAME} ${SOURCES})
target_link_libraries(${EXE_NAME} ${LIB_MODULE})
Содержимое исходных файлов библиотеки не требуется.
Я хотел бы включить заголовок example_lib.hpp
в main.cpp
, используя :
#include "example_lib.hpp"
С конфигурацией, написанной выше, я могу включить ее только с помощью:
#include "sub/example_lib.hpp"
Я могу добавить следующую строку в cmake_src
, чтобы она работала, но я не хочу перечислять каждый отдельный каталог в lib
:
include_directories ("${PROJECT_SOURCE_DIR}/lib/sub")
Я пробовал также с:
file(GLOB_RECURSE LIB_SOURCES
${PROJECT_SOURCE_DIR}/lib/*)
include_directories (${LIB_SOURCES})
Но это тоже не работает.
Как мне получить желаемое поведение?