@@ -15,15 +15,15 @@ project(
1515
1616# [CMAKE.SKIP_EXAMPLES]
1717option(
18- BEMAN_EXEMPLAR_BUILD_EXAMPLES
19- "Enable building examples. Default : ON . Values: { ON, OFF }."
18+ BEMAN_INPLACE_VECTOR_BUILD_EXAMPLES
19+ "Enable building examples. Default : ${PROJECT_IS_TOP_LEVEL} . Values: { ON, OFF}."
2020 ${PROJECT_IS_TOP_LEVEL}
2121)
2222
2323# [CMAKE.SKIP_TESTS]
2424option(
2525 BEMAN_INPLACE_VECTOR_BUILD_TESTS
26- "Enable building tests and test infrastructure. Default : ON . Values: { ON, OFF }."
26+ "Enable building tests and test infrastructure. Default : ${PROJECT_IS_TOP_LEVEL} . Values: { ON, OFF }."
2727 ${PROJECT_IS_TOP_LEVEL}
2828)
2929
@@ -41,34 +41,55 @@ configure_file(
4141
4242include (FetchContent)
4343include (GNUInstallDirs)
44+ include (CMakePackageConfigHelpers)
4445
4546add_library(beman.inplace_vector INTERFACE)
4647# [CMAKE.LIBRARY_ALIAS]
4748add_library(beman ::inplace_vector ALIAS beman.inplace_vector)
4849
49- target_include_directories (
50+ target_sources (
5051 beman.inplace_vector
5152 INTERFACE
52- $< BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR}/include>
53- $< BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR}/include>
54- $< INSTALL_INTERFACE :include>
53+ FILE_SET HEADERS
54+ BASE_DIRS
55+ ${CMAKE_CURRENT_SOURCE_DIR}/include
56+ ${CMAKE_CURRENT_BINARY_DIR}/include
57+ FILES
58+ ${CMAKE_CURRENT_SOURCE_DIR}/include/beman/inplace_vector/inplace_vector.hpp
59+ ${CMAKE_CURRENT_BINARY_DIR}/include/beman/inplace_vector/config.hpp
5560)
5661
57- # Install the InplaceVector library to the appropriate destination
62+ # Install the INTERFACE library target and create an export set
5863install(
5964 TARGETS beman.inplace_vector
60- EXPORT ${TARGETS_EXPORT_NAME}
61- DESTINATION
62- ${CMAKE_INSTALL_LIBDIR}
65+ EXPORT beman.inplace_vector-targets
66+ FILE_SET HEADERS
67+ )
68+
69+ configure_package_config_file(
70+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/beman.inplace_vector-config.cmake.in"
71+ "${CMAKE_CURRENT_BINARY_DIR}/beman.inplace_vector-config.cmake"
72+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/beman.inplace_vector
73+ )
74+
75+ write_basic_package_version_file(
76+ "${CMAKE_CURRENT_BINARY_DIR}/beman.inplace_vector-config-version.cmake"
77+ VERSION ${PROJECT_VERSION}
78+ COMPATIBILITY SameMajorVersion
79+ )
80+
81+ install(
82+ FILES
83+ "${CMAKE_CURRENT_BINARY_DIR}/beman.inplace_vector-config.cmake"
84+ "${CMAKE_CURRENT_BINARY_DIR}/beman.inplace_vector-config-version.cmake"
85+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/beman.inplace_vector
6386)
6487
65- # Install the header files to the appropriate destination
6688install(
67- DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/
68- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${CMAKE_PROJECT_NAME}
69- FILES_MATCHING
70- PATTERN
71- "${CMAKE_CURRENT_SOURCE_DIR}/include/beman/inplace_vector/inplace_vector.hpp"
89+ EXPORT beman.inplace_vector-targets
90+ FILE beman.inplace_vector-targets.cmake
91+ NAMESPACE beman ::
92+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/beman.inplace_vector
7293)
7394
7495if(BEMAN_INPLACE_VECTOR_BUILD_TESTS)
@@ -92,6 +113,6 @@ if(BEMAN_INPLACE_VECTOR_BUILD_TESTS)
92113 add_subdirectory(tests/beman/inplace_vector)
93114endif()
94115
95- if(BEMAN_EXEMPLAR_BUILD_EXAMPLES )
116+ if(BEMAN_INPLACE_VECTOR_BUILD_EXAMPLES )
96117 add_subdirectory(examples)
97118endif()
0 commit comments