2
2
#
3
3
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4
4
5
- cmake_minimum_required (VERSION 3.27)
5
+ cmake_minimum_required (VERSION 3.27...3.31 )
6
6
7
7
project (beman_optional26 VERSION 0.0.0 LANGUAGES CXX)
8
8
9
9
# Includes
10
- include (CTest)
11
- include (FetchContent)
10
+ include (CPack)
11
+ include (GNUInstallDirs)
12
+ include (CMakePackageConfigHelpers)
12
13
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} )
14
17
15
18
option (
16
19
OPTIONAL26_ENABLE_TESTING
@@ -20,6 +23,8 @@ option(
20
23
21
24
# Build the tests if enabled via the option OPTIONAL26_ENABLE_TESTING
22
25
if (OPTIONAL26_ENABLE_TESTING)
26
+ include (FetchContent)
27
+
23
28
# Fetch GoogleTest
24
29
FetchContent_Declare(
25
30
googletest
@@ -29,12 +34,15 @@ if(OPTIONAL26_ENABLE_TESTING)
29
34
e39786088138f2749d64e9e90e0f9902daa77c40 # release-1.15.0
30
35
)
31
36
FetchContent_MakeAvailable(googletest)
37
+
38
+ enable_testing ()
32
39
endif ()
33
40
34
41
set (CMAKE_VERIFY_INTERFACE_HEADER_SETS ON )
35
42
36
43
# Create the library target and named header set for beman_optional26
37
44
add_library (beman_optional26 INTERFACE )
45
+ add_library (Beman::Optional26::beman_optional26 ALIAS beman_optional26)
38
46
target_sources (
39
47
beman_optional26
40
48
PUBLIC FILE_SET beman_optional26_headers TYPE HEADERS BASE_DIRS include
@@ -59,23 +67,24 @@ add_subdirectory(include/beman/optional26)
59
67
60
68
add_subdirectory (examples)
61
69
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
+ )
63
76
64
- # This will be used to replace @PACKAGE_cmakeModulesDir@
65
- set (cmakeModulesDir cmake/beman)
66
77
configure_package_config_file(
67
78
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}
73
81
)
74
82
75
83
install (
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}
79
88
)
80
89
81
90
# Coverage
0 commit comments