Skip to content

Commit 856285c

Browse files
committed
Update cmake install
1 parent a49df6c commit 856285c

File tree

2 files changed

+39
-18
lines changed

2 files changed

+39
-18
lines changed

CMakeLists.txt

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,34 +41,51 @@ configure_file(
4141

4242
include(FetchContent)
4343
include(GNUInstallDirs)
44+
include(CMakePackageConfigHelpers)
4445

45-
add_library(beman.inplace_vector INTERFACE)
46+
add_library(${PROJECT_NAME} INTERFACE)
4647
# [CMAKE.LIBRARY_ALIAS]
47-
add_library(beman::inplace_vector ALIAS beman.inplace_vector)
48+
add_library(beman::inplace_vector ALIAS ${PROJECT_NAME})
4849

49-
target_include_directories(
50-
beman.inplace_vector
50+
target_sources(
51+
${PROJECT_NAME}
5152
INTERFACE
52-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
53-
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
54-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
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
60+
)
61+
62+
# Install the INTERFACE library target and create an export set
63+
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets FILE_SET HEADERS)
64+
65+
configure_package_config_file(
66+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in"
67+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
68+
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
69+
)
70+
71+
write_basic_package_version_file(
72+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
73+
VERSION ${PROJECT_VERSION}
74+
COMPATIBILITY SameMajorVersion
5575
)
5676

57-
# Install the InplaceVector library to the appropriate destination
5877
install(
59-
TARGETS beman.inplace_vector
60-
EXPORT beman.inplace_vector-targets
61-
FILE_SET HEADERS
78+
FILES
79+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
80+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
81+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
6282
)
6383

64-
# Install the header files to the appropriate destination
6584
install(
66-
DIRECTORY
67-
${CMAKE_CURRENT_SOURCE_DIR}/include/
68-
${CMAKE_CURRENT_BINARY_DIR}/include/
69-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
70-
FILES_MATCHING
71-
PATTERN "*.hpp"
85+
EXPORT ${PROJECT_NAME}-targets
86+
FILE ${PROJECT_NAME}-targets.cmake
87+
NAMESPACE beman::
88+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
7289
)
7390

7491
if(BEMAN_INPLACE_VECTOR_BUILD_TESTS)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
4+
check_required_components("@PROJECT_NAME@")

0 commit comments

Comments
 (0)