22#
33# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
5- cmake_minimum_required (VERSION 3.27)
5+ cmake_minimum_required (VERSION 3.27...3.31 )
66
77project (beman_optional26 VERSION 0.0.0 LANGUAGES CXX)
88
99# Includes
10- include (CTest)
11- include (FetchContent)
10+ include (CPack)
11+ include (GNUInstallDirs)
12+ include (CMakePackageConfigHelpers)
1213
13- set (TARGETS_EXPORT_NAME ${CMAKE_PROJECT_NAME} Targets)
14+ set (TARGET_PACKAGE_NAME ${PROJECT_NAME} )
15+ set (TARGETS_EXPORT_NAME ${TARGET_PACKAGE_NAME} -targets)
16+ set (INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR} /cmake/${TARGET_PACKAGE_NAME} )
1417
1518option (
1619 OPTIONAL26_ENABLE_TESTING
@@ -20,6 +23,8 @@ option(
2023
2124# Build the tests if enabled via the option OPTIONAL26_ENABLE_TESTING
2225if (OPTIONAL26_ENABLE_TESTING)
26+ include (FetchContent)
27+
2328 # Fetch GoogleTest
2429 FetchContent_Declare(
2530 googletest
@@ -29,12 +34,15 @@ if(OPTIONAL26_ENABLE_TESTING)
2934 e39786088138f2749d64e9e90e0f9902daa77c40 # release-1.15.0
3035 )
3136 FetchContent_MakeAvailable(googletest)
37+
38+ enable_testing ()
3239endif ()
3340
3441set (CMAKE_VERIFY_INTERFACE_HEADER_SETS ON )
3542
3643# Create the library target and named header set for beman_optional26
3744add_library (beman_optional26 INTERFACE )
45+ add_library (Beman::Optional26::beman_optional26 ALIAS beman_optional26)
3846target_sources (
3947 beman_optional26
4048 PUBLIC FILE_SET beman_optional26_headers TYPE HEADERS BASE_DIRS include
@@ -59,23 +67,24 @@ add_subdirectory(include/beman/optional26)
5967
6068add_subdirectory (examples)
6169
62- include (CMakePackageConfigHelpers)
70+ # install
71+ write_basic_package_version_file(
72+ ${CMAKE_CURRENT_BINARY_DIR} /${TARGET_PACKAGE_NAME} -config-version .cmake
73+ VERSION ${PROJECT_VERSION}
74+ COMPATIBILITY AnyNewerVersion
75+ )
6376
64- # This will be used to replace @PACKAGE_cmakeModulesDir@
65- set (cmakeModulesDir cmake/beman)
6677configure_package_config_file(
6778 cmake/Config.cmake.in
68- BemanOptional26Config.cmake
69- INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/beman/optional26/
70- PATH_VARS cmakeModulesDir
71- NO_SET_AND_CHECK_MACRO
72- NO_CHECK_REQUIRED_COMPONENTS_MACRO
79+ ${CMAKE_CURRENT_BINARY_DIR} /${TARGET_PACKAGE_NAME} -config.cmake
80+ INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
7381)
7482
7583install (
76- FILES ${CMAKE_CURRENT_BINARY_DIR} /BemanOptional26Config.cmake
77- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/beman/optional26/
78- COMPONENT beman_optional26_development
84+ FILES
85+ ${CMAKE_CURRENT_BINARY_DIR} /${TARGET_PACKAGE_NAME} -config.cmake
86+ ${CMAKE_CURRENT_BINARY_DIR} /${TARGET_PACKAGE_NAME} -config-version .cmake
87+ DESTINATION ${INSTALL_CONFIGDIR}
7988)
8089
8190# Coverage
0 commit comments