Header only библиотека на CMake
у меня есть h-o библиотека utils, которую я пытаюсь подключить в exe-шник. структура директорий:
+ my_proj
| + source
| | + ext
| | | + utils
| | | | + include
| | | | | + utils
| | | | | | patterns.hxx
| | | | | | other utils headers...
| | | | CMakeLists.txt
| | CMakeLists.txt
| | main.cxx
| | other sources...
| CMakeLists.txt
в my_proj/CMakeLists.txt и my_proj/source/CMakeLists.txt я собираю exe из исходников (в корневом файле есть команда
...
add_subdirectory("./source/")
...
а в дочернем:
...
add_executable(exe_name sources...)
...
add_subdirectory("./ext/utils/")
target_link_libraries(exe_name utils)
...
вот содержание my_proj/source/ext/utils/CMakeLists.txt:
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
project("utils"
VERSION 0.0.1
LANGUAGES CXX
)
set(UTILS_LIB_NAME "utils")
add_library(${UTILS_LIB_NAME} INTERFACE)
include(GNUInstallDirs)
target_include_directories(
${UTILS_LIB_NAME}
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/utils>
$<INSTALL_INTERFACE:include/utils>
)
target_compile_features(
${UTILS_LIB_NAME}
INTERFACE
cxx_std_17
)
install(
TARGETS ${UTILS_LIB_NAME}
EXPORT utils_Targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
install(
DIRECTORY ${PROJECT_SOURCE_DIR}/include/utils
DESTINATION include
)
install(
EXPORT utils_Targets
FILE utilsTargets.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/utils
NAMESPACE utils::
)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"utilsConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
configure_package_config_file(
"${PROJECT_SOURCE_DIR}/cmake/utilsConfig.cmake.in"
"${PROJECT_BINARY_DIR}/utilsConfig.cmake"
INSTALL_DESTINATION
${CMAKE_INSTALL_LIBDIR}/cmake/utils
)
install(
FILES
${PROJECT_BINARY_DIR}/utilsConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/utilsConfigVersion.cmake
DESTINATION
${CMAKE_INSTALL_LIBDIR}/cmake/utils
)
я ожидал, что смогу написать что-то такое:
// main.cxx
# include <utils/patterns.hxx>
...
но компилятор выдает ошибку
"не удается открыть файл включения utils/patterns.hxx"
что я делаю не так?