Skip to content

Commit 189e381

Browse files
committed
Modernize cmake
properly export targets
1 parent e6fec43 commit 189e381

File tree

2 files changed

+68
-3
lines changed

2 files changed

+68
-3
lines changed

CMakeLists.txt

+65-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,73 @@ cmake_minimum_required(VERSION 3.9)
22
project(concurrentqueue VERSION 1.0.0)
33

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

67
add_library(${PROJECT_NAME} INTERFACE)
78

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

10-
install(FILES blockingconcurrentqueue.h concurrentqueue.h lightweightsemaphore.h LICENSE.md
11-
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
15+
install(TARGETS ${PROJECT_NAME}
16+
EXPORT ${PROJECT_NAME}Targets
17+
)
1218

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

concurrentqueueConfig.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)