CMake рекурсивно включает каталоги библиотеки - PullRequest
0 голосов
/ 26 июня 2018

Я совершенно новичок в 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})

Но это тоже не работает.

Как мне получить желаемое поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...