|
5 | 5 | # Distributed under the Boost Software License, Version 1.0. (See accompanying |
6 | 6 | # file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
7 | 7 |
|
8 | | -cmake_minimum_required(VERSION 3.23...3.31) |
| 8 | +cmake_minimum_required(VERSION 3.25...4.2.3) |
9 | 9 |
|
10 | 10 | project(Eggs.FlatMap CXX) |
11 | 11 |
|
12 | | -set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
| 12 | +include(GNUInstallDirs) |
13 | 13 |
|
14 | 14 | if(PROJECT_IS_TOP_LEVEL) |
15 | | - include(CTest) |
| 15 | + set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
| 16 | + set(CMAKE_CXX_SCAN_FOR_MODULES OFF) |
| 17 | + |
| 18 | + include(CTest) # option(BUILD_TESTING ...) |
16 | 19 | option(BUILD_EXAMPLE "Build the examples" ON) |
17 | 20 | option(ENABLE_INSTALL "Enable installing the library" ON) |
| 21 | + set(SYSTEM OFF) |
18 | 22 | else() |
19 | | - option(EGGS_FLAT_MAP_BUILD_EXAMPLE "Build the examples" OFF) |
20 | 23 | option(EGGS_FLAT_MAP_BUILD_TESTING "Build the testing tree" OFF) |
| 24 | + option(EGGS_FLAT_MAP_BUILD_EXAMPLE "Build the examples" OFF) |
21 | 25 | option(EGGS_FLAT_MAP_ENABLE_INSTALL "Enable installing the library" OFF) |
22 | 26 |
|
23 | 27 | set(BUILD_EXAMPLE ${EGGS_FLAT_MAP_BUILD_EXAMPLE}) |
24 | 28 | set(BUILD_TESTING ${EGGS_FLAT_MAP_BUILD_TESTING}) |
25 | 29 | set(ENABLE_INSTALL ${EGGS_FLAT_MAP_ENABLE_INSTALL}) |
| 30 | + set(SYSTEM ON) |
26 | 31 | endif() |
27 | 32 |
|
28 | | -include(GNUInstallDirs) |
29 | | - |
30 | | -# ============================================================================ |
31 | | -# Library target |
32 | | -# ============================================================================ |
33 | | - |
| 33 | +# Library target (header-only INTERFACE library) |
34 | 34 | add_library(_eggs_flat_map INTERFACE) |
35 | 35 | target_sources( |
36 | 36 | _eggs_flat_map |
37 | 37 | INTERFACE FILE_SET HEADERS BASE_DIRS include FILES include/eggs/flat_map.hpp |
38 | 38 | ) |
| 39 | +set_target_properties( |
| 40 | + _eggs_flat_map |
| 41 | + PROPERTIES |
| 42 | + EXPORT_NAME FlatMap |
| 43 | + SYSTEM ${SYSTEM} |
| 44 | + VERIFY_INTERFACE_HEADER_SETS ${BUILD_TESTING} |
| 45 | +) |
39 | 46 | target_compile_features(_eggs_flat_map INTERFACE cxx_std_23) |
40 | | -set_target_properties(_eggs_flat_map PROPERTIES EXPORT_NAME FlatMap) |
41 | 47 |
|
42 | 48 | add_library(Eggs::FlatMap ALIAS _eggs_flat_map) |
43 | 49 |
|
44 | | -# ============================================================================ |
45 | 50 | # Example |
46 | | -# ============================================================================ |
47 | | - |
48 | 51 | if(BUILD_EXAMPLE) |
49 | 52 | add_subdirectory(example) |
50 | 53 | endif() |
51 | 54 |
|
52 | | -# ============================================================================ |
53 | 55 | # Test |
54 | | -# ============================================================================ |
55 | | - |
56 | 56 | if(BUILD_TESTING) |
57 | 57 | add_subdirectory(test) |
58 | 58 | endif() |
59 | 59 |
|
60 | | -# ============================================================================ |
61 | 60 | # Install |
62 | | -# ============================================================================ |
63 | | - |
64 | 61 | if(ENABLE_INSTALL) |
| 62 | + include(CMakePackageConfigHelpers) |
| 63 | + |
| 64 | + install(TARGETS _eggs_flat_map EXPORT Eggs::FlatMap FILE_SET HEADERS) |
| 65 | + |
65 | 66 | install( |
66 | | - TARGETS _eggs_flat_map |
67 | | - EXPORT _targets |
68 | | - FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} |
| 67 | + EXPORT Eggs::FlatMap |
| 68 | + NAMESPACE Eggs:: |
| 69 | + FILE Eggs.FlatMapTargets.cmake |
| 70 | + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Eggs.FlatMap |
| 71 | + ) |
| 72 | + |
| 73 | + file( |
| 74 | + GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/Eggs.FlatMapConfig.cmake" |
| 75 | + CONTENT |
| 76 | + [[include("${CMAKE_CURRENT_LIST_DIR}/Eggs.FlatMapTargets.cmake")]] |
| 77 | + ) |
| 78 | + |
| 79 | + write_basic_package_version_file( |
| 80 | + ${CMAKE_CURRENT_BINARY_DIR}/Eggs.FlatMapConfigVersion.cmake |
| 81 | + VERSION 1.0.0 |
| 82 | + COMPATIBILITY SameMajorVersion |
69 | 83 | ) |
70 | 84 |
|
71 | 85 | install( |
72 | | - EXPORT _targets |
73 | | - NAMESPACE Eggs:: |
74 | | - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/eggs.flat_map |
75 | | - FILE eggs.flat_map-config.cmake |
| 86 | + FILES |
| 87 | + ${CMAKE_CURRENT_BINARY_DIR}/Eggs.FlatMapConfig.cmake |
| 88 | + ${CMAKE_CURRENT_BINARY_DIR}/Eggs.FlatMapConfigVersion.cmake |
| 89 | + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Eggs.FlatMap |
76 | 90 | ) |
77 | 91 | endif() |
0 commit comments