|
1 |
| -cmake_minimum_required(VERSION 3.15 FATAL_ERROR) |
| 1 | +cmake_minimum_required(VERSION 3.21 FATAL_ERROR) |
2 | 2 |
|
3 |
| -if(NOT DEFINED PROJECT_NAME) |
4 |
| - set(BUILD_AS_STANDALONE ON) |
5 |
| -else() |
6 |
| - set(BUILD_AS_STANDALONE OFF) |
7 |
| -endif() |
| 3 | +project(flat.hpp |
| 4 | + VERSION "0.0.1" |
| 5 | + DESCRIPTION "Library of flat vector-like based associative containers" |
| 6 | + HOMEPAGE_URL "https://github.com/blackmatov/flat.hpp") |
8 | 7 |
|
9 |
| -project(flat.hpp) |
| 8 | +# |
| 9 | +# LIBRARY |
| 10 | +# |
10 | 11 |
|
11 | 12 | add_library(${PROJECT_NAME} INTERFACE)
|
12 |
| -target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) |
13 |
| -target_include_directories(${PROJECT_NAME} INTERFACE headers) |
| 13 | +add_library(flat.hpp::flat.hpp ALIAS ${PROJECT_NAME}) |
| 14 | + |
| 15 | +target_compile_features(${PROJECT_NAME} INTERFACE |
| 16 | + cxx_std_17) |
| 17 | + |
| 18 | +target_include_directories(${PROJECT_NAME} INTERFACE |
| 19 | + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/headers> |
| 20 | + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) |
14 | 21 |
|
15 | 22 | #
|
16 |
| -# BUILD_AS_STANDALONE |
| 23 | +# INSTALL |
17 | 24 | #
|
18 | 25 |
|
19 |
| -if(NOT ${BUILD_AS_STANDALONE}) |
20 |
| - return() |
| 26 | +if(PROJECT_IS_TOP_LEVEL) |
| 27 | + include(CMakePackageConfigHelpers) |
| 28 | + include(GNUInstallDirs) |
| 29 | + |
| 30 | + set(FLAT_HPP_INSTALL_CONFIG_DIR |
| 31 | + "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") |
| 32 | + |
| 33 | + set(FLAT_HPP_INSTALL_CONFIG_INPUT |
| 34 | + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in") |
| 35 | + |
| 36 | + set(FLAT_HPP_INSTALL_GENERATED_CONFIG_CMAKE |
| 37 | + "${CMAKE_CURRENT_BINARY_DIR}/generated/${PROJECT_NAME}-config.cmake") |
| 38 | + |
| 39 | + set(FLAT_HPP_INSTALL_GENERATED_CONFIG_VERSION_CMAKE |
| 40 | + "${CMAKE_CURRENT_BINARY_DIR}/generated/${PROJECT_NAME}-config-version.cmake") |
| 41 | + |
| 42 | + configure_package_config_file( |
| 43 | + "${FLAT_HPP_INSTALL_CONFIG_INPUT}" |
| 44 | + "${FLAT_HPP_INSTALL_GENERATED_CONFIG_CMAKE}" |
| 45 | + INSTALL_DESTINATION "${FLAT_HPP_INSTALL_CONFIG_DIR}" |
| 46 | + NO_SET_AND_CHECK_MACRO |
| 47 | + NO_CHECK_REQUIRED_COMPONENTS_MACRO) |
| 48 | + |
| 49 | + write_basic_package_version_file( |
| 50 | + "${FLAT_HPP_INSTALL_GENERATED_CONFIG_VERSION_CMAKE}" |
| 51 | + VERSION ${PROJECT_VERSION} |
| 52 | + COMPATIBILITY AnyNewerVersion |
| 53 | + ARCH_INDEPENDENT) |
| 54 | + |
| 55 | + install( |
| 56 | + TARGETS ${PROJECT_NAME} |
| 57 | + EXPORT ${PROJECT_NAME}-targets |
| 58 | + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") |
| 59 | + |
| 60 | + install( |
| 61 | + DIRECTORY headers/${PROJECT_NAME} |
| 62 | + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") |
| 63 | + |
| 64 | + install( |
| 65 | + EXPORT ${PROJECT_NAME}-targets |
| 66 | + FILE ${PROJECT_NAME}-targets.cmake |
| 67 | + NAMESPACE ${PROJECT_NAME}:: |
| 68 | + DESTINATION "${FLAT_HPP_INSTALL_CONFIG_DIR}") |
| 69 | + |
| 70 | + install( |
| 71 | + FILES "${FLAT_HPP_INSTALL_GENERATED_CONFIG_CMAKE}" |
| 72 | + "${FLAT_HPP_INSTALL_GENERATED_CONFIG_VERSION_CMAKE}" |
| 73 | + DESTINATION "${FLAT_HPP_INSTALL_CONFIG_DIR}") |
21 | 74 | endif()
|
22 | 75 |
|
23 |
| -option(BUILD_WITH_COVERAGE "Build with coverage" OFF) |
24 |
| -option(BUILD_WITH_SANITIZERS "Build with sanitizers" OFF) |
| 76 | +# |
| 77 | +# DEVELOPER |
| 78 | +# |
25 | 79 |
|
26 |
| -enable_testing() |
27 |
| -set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
28 |
| -set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMake") |
29 |
| -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") |
| 80 | +if(PROJECT_IS_TOP_LEVEL) |
| 81 | + option(BUILD_WITH_COVERAGE "Build with coverage" OFF) |
| 82 | + option(BUILD_WITH_SANITIZERS "Build with sanitizers" OFF) |
30 | 83 |
|
31 |
| -include(EnableASan) |
32 |
| -include(EnableGCov) |
33 |
| -include(EnableUBSan) |
| 84 | + enable_testing() |
| 85 | + set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
| 86 | + set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMake") |
| 87 | + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") |
34 | 88 |
|
35 |
| -add_subdirectory(vendors) |
36 |
| -add_subdirectory(untests) |
| 89 | + include(EnableASan) |
| 90 | + include(EnableGCov) |
| 91 | + include(EnableUBSan) |
| 92 | + |
| 93 | + add_subdirectory(vendors) |
| 94 | + add_subdirectory(untests) |
| 95 | +endif() |
0 commit comments