I have written my first project with an installation option. The project contains only header files, after installing with FetchContent
I get the following error:
Could not find a package configuration file provided by “utils” with any of
Structure of project:
├── build
├── CMakeLists.txt
├── libutils/utilites.hpp
└── utilsConfig.cmake.in
See below the code:
project(
utils
VERSION 1.0.0
DESCRIPTION "Implementation of utils library."
LANGUAGES CXX
)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
##########################
set(NAMESPACE_NAME "libutils")
set(UTILS_DIR
${CMAKE_SOURCE_DIR}/libutils
)
set(INCLUDE_UTILS
${UTILS_DIR}/utilities.hpp
)
#########################
add_library(${PROJECT_NAME} INTERFACE)
add_library(${NAMESPACE_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
set_target_properties(
${PROJECT_NAME}
PROPERTIES VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
PUBLIC_HEADER ${INCLUDE_UTILS}
)
target_sources(${PROJECT_NAME}
PUBLIC
$<BUILD_INTERFACE:${INCLUDE_UTILS}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_include_directories(
${PROJECT_NAME}
INTERFACE
$<BUILD_INTERFACE:${INCLUDE_UTILS}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
#########################
set(ConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
install(
TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Library
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Library
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Library
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME} COMPONENT Development
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(
EXPORT ${PROJECT_NAME}Targets
FILE ${PROJECT_NAME}Targets.cmake
NAMESPACE ${NAMESPACE_NAME}::
DESTINATION ${ConfigPackageLocation}
COMPONENT Development
)
configure_package_config_file(
${PROJECT_NAME}Config.cmake.in
${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION ${ConfigPackageLocation}
PATH_VARS CMAKE_INSTALL_LIBDIR
)
write_basic_package_version_file(
${PROJECT_NAME}ConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION
${ConfigPackageLocation}
COMPONENT
Development
)
install(
DIRECTORY ${UTILS_DIR}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
)
I would be grateful for any help or tips.
I tried to set utils_DIR
manually but I doesn’t work either.