Как создать экспортный конфигурационный файл CMake с компонентами библиотеки?
Прошу помощи в написании экспортного конфигурационного файла "ProjectConfig.cmake" для проекта "Project", для использования в другом проекте в виде:
find_package(Project COMPONENTS lib1 lib2 REQUIRED)
На данный момент я создал рабочий файл, который генерируется функцией configure_package_config_file из файла ProjectConfig.cmake.in:
@PACKAGE_INIT@
# get a config name
if(@PROJECT_NAME@_STATIC_LIBRARIES)
set(config_name Static)
else()
set(config_name Shared)
endif()
# include an export targets file
set(export_targets "${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@_${config_name}Targets.cmake")
if(NOT EXISTS "${export_targets}")
set(@PROJECT_NAME@_FOUND FALSE)
set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Requested configuration ${export_targets} was not found")
else()
include("${export_targets}")
endif()
# find components
foreach(component ${@PROJECT_NAME@_FIND_COMPONENTS})
if(NOT TARGET ${component})
if(@PROJECT_NAME@_FIND_REQUIRED_${component})
set(@PROJECT_NAME@_FOUND FALSE)
set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Found @PROJECT_NAME@ but requested component '${component}'\
is missing in the config defined in ${@PROJECT_NAME@_DIR}.")
endif()
endif()
endforeach()
Как по мне, это довольно "топорный" способ проверки наличия компонентов. Есть ли способ проще, красивее, современнее?