Skip to content

Commit ec60ea1

Browse files
authored
Fix cmake install (#93)
* Fix cmake install * Update cmake install * Update Cmake option docstring * Improve cmake readability
1 parent aaa789e commit ec60ea1

File tree

2 files changed

+43
-18
lines changed

2 files changed

+43
-18
lines changed

CMakeLists.txt

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ project(
1515

1616
# [CMAKE.SKIP_EXAMPLES]
1717
option(
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]
2424
option(
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

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

4546
add_library(beman.inplace_vector INTERFACE)
4647
# [CMAKE.LIBRARY_ALIAS]
4748
add_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
5863
install(
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
6688
install(
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

7495
if(BEMAN_INPLACE_VECTOR_BUILD_TESTS)
@@ -92,6 +113,6 @@ if(BEMAN_INPLACE_VECTOR_BUILD_TESTS)
92113
add_subdirectory(tests/beman/inplace_vector)
93114
endif()
94115

95-
if(BEMAN_EXEMPLAR_BUILD_EXAMPLES)
116+
if(BEMAN_INPLACE_VECTOR_BUILD_EXAMPLES)
96117
add_subdirectory(examples)
97118
endif()
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)