Skip to content

Commit 899820a

Browse files
DasRoteSkelettMatthias Schoepfer
authored and
Matthias Schoepfer
committed
CMakeLists.txt: Add cmake config package export
Basically done the same thing as in concurrentqueue to make it easy for cmake based project to pick up the install location / header files. Signed-off-by: Matthias Schoepfer <[email protected]>
1 parent 2dee33a commit 899820a

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

CMakeLists.txt

+56-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,65 @@ cmake_minimum_required(VERSION 3.9)
22
project(readerwriterqueue VERSION 1.0.0)
33

44
include(GNUInstallDirs)
5+
include(CMakePackageConfigHelpers)
56

67
add_library(${PROJECT_NAME} INTERFACE)
78

8-
target_include_directories(readerwriterqueue INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
9+
target_include_directories(readerwriterqueue INTERFACE
10+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
11+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}/>
12+
)
913

1014
install(FILES atomicops.h readerwriterqueue.h readerwritercircularbuffer.h LICENSE.md
1115
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
16+
17+
install(TARGETS ${PROJECT_NAME}
18+
EXPORT ${PROJECT_NAME}Targets
19+
)
20+
21+
write_basic_package_version_file(
22+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
23+
VERSION
24+
${PROJECT_VERSION}
25+
COMPATIBILITY AnyNewerVersion
26+
)
27+
28+
configure_package_config_file(${PROJECT_NAME}Config.cmake.in
29+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
30+
INSTALL_DESTINATION
31+
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/
32+
)
33+
34+
install(EXPORT
35+
${PROJECT_NAME}Targets
36+
FILE
37+
${PROJECT_NAME}Targets.cmake
38+
NAMESPACE
39+
"${PROJECT_NAME}::"
40+
DESTINATION
41+
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
42+
COMPONENT
43+
Devel
44+
)
45+
46+
install(
47+
FILES
48+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
49+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
50+
DESTINATION
51+
${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
52+
COMPONENT
53+
Devel
54+
)
55+
56+
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
57+
set(CPACK_PACKAGE_VENDOR "Cameron Desrochers <[email protected]>")
58+
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A single-producer, single-consumer lock-free queue for C++.")
59+
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
60+
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
61+
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
62+
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
63+
set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR})
64+
set(CPACK_GENERATOR "RPM;DEB")
65+
66+
include(CPack)

readerwriterqueueConfig.cmake.in

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@PACKAGE_INIT@
2+
3+
include(${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake)

0 commit comments

Comments
 (0)