Skip to content

Commit a71d4c6

Browse files
committed
Add CMake install support
1 parent b6ec845 commit a71d4c6

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
build/
22
cmake-build-*
33
.vs/
4+
.vscode/
45
.idea/
56
.project
67
*~

CMakeLists.txt

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.2)
22

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

55
add_library(${PROJECT_NAME} INTERFACE)
66
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
@@ -29,4 +29,43 @@ if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
2929

3030
enable_testing()
3131
add_test(MPMCQueueTest MPMCQueueTest)
32+
endif()
33+
34+
# Install
35+
include(GNUInstallDirs)
36+
include(CMakePackageConfigHelpers)
37+
38+
write_basic_package_version_file(
39+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
40+
COMPATIBILITY SameMajorVersion
41+
)
42+
43+
export(
44+
TARGETS ${PROJECT_NAME}
45+
NAMESPACE ${PROJECT_NAME}::
46+
FILE "${PROJECT_NAME}Config.cmake"
47+
)
48+
49+
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
50+
install(
51+
DIRECTORY "include/"
52+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
53+
)
54+
55+
install(
56+
TARGETS ${PROJECT_NAME}
57+
EXPORT "${PROJECT_NAME}Config"
58+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
59+
)
60+
61+
install(
62+
EXPORT "${PROJECT_NAME}Config"
63+
NAMESPACE ${PROJECT_NAME}::
64+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
65+
)
66+
67+
install(
68+
FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
69+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
70+
)
3271
endif()

0 commit comments

Comments
 (0)