Skip to content

Commit a1527df

Browse files
committed
Add CMake install support
1 parent dcde7ba commit a1527df

File tree

1 file changed

+41
-2
lines changed

1 file changed

+41
-2
lines changed

CMakeLists.txt

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
cmake_minimum_required(VERSION 3.6)
22

3-
project(SPSCQueue LANGUAGES CXX)
3+
project(SPSCQueue VERSION 1.0 LANGUAGES CXX)
44

55
add_library(${PROJECT_NAME} INTERFACE)
66
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
77

88
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_11)
99

10-
target_include_directories(SPSCQueue INTERFACE
10+
target_include_directories(${PROJECT_NAME} INTERFACE
1111
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
1212
$<INSTALL_INTERFACE:include>)
1313

@@ -42,4 +42,43 @@ if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
4242

4343
enable_testing()
4444
add_test(SPSCQueueTest SPSCQueueTest)
45+
endif()
46+
47+
# Install
48+
include(GNUInstallDirs)
49+
include(CMakePackageConfigHelpers)
50+
51+
write_basic_package_version_file(
52+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
53+
COMPATIBILITY SameMajorVersion
54+
)
55+
56+
export(
57+
TARGETS ${PROJECT_NAME}
58+
NAMESPACE ${PROJECT_NAME}::
59+
FILE "${PROJECT_NAME}Config.cmake"
60+
)
61+
62+
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
63+
install(
64+
DIRECTORY "include/"
65+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
66+
)
67+
68+
install(
69+
TARGETS ${PROJECT_NAME}
70+
EXPORT "${PROJECT_NAME}Config"
71+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
72+
)
73+
74+
install(
75+
EXPORT "${PROJECT_NAME}Config"
76+
NAMESPACE ${PROJECT_NAME}::
77+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
78+
)
79+
80+
install(
81+
FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
82+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
83+
)
4584
endif()

0 commit comments

Comments
 (0)