11cmake_minimum_required (VERSION 3.6)
22
3- project (SPSCQueue LANGUAGES CXX)
3+ project (SPSCQueue VERSION 1.0 LANGUAGES CXX)
44
55add_library (${PROJECT_NAME} INTERFACE )
66add_library (${PROJECT_NAME} ::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
77
88target_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+ )
4584endif ()
0 commit comments