From a268dfbdb60293256288760052664df0ddc7f645 Mon Sep 17 00:00:00 2001 From: Egor Kuzmin Date: Thu, 5 Nov 2020 17:53:38 +0300 Subject: [PATCH] install step and create config-file package --- CMakeLists.txt | 32 ++++++++++++++++++++++++++++++-- cmake/Config.cmake.in | 16 ++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 cmake/Config.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bdd07c..73bc91e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,9 @@ option(UUID_USING_CXX20_SPAN "Using span from std instead of gsl" OFF) # Library target add_library(${PROJECT_NAME} INTERFACE) -target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_SOURCE_DIR}/include) +target_include_directories(${PROJECT_NAME} INTERFACE + $ + $) # Using system uuid generator if (UUID_SYSTEM_GENERATOR) @@ -29,9 +31,35 @@ endif () # Using span from std if (NOT UUID_USING_CXX20_SPAN) - target_include_directories(${PROJECT_NAME} INTERFACE ${CMAKE_SOURCE_DIR}/gsl) + target_include_directories(${PROJECT_NAME} INTERFACE + $ + $) + install(DIRECTORY gsl TYPE INCLUDE) endif () +# Install step and imported target +install(FILES include/uuid.h TYPE INCLUDE) +install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets) +install(EXPORT ${PROJECT_NAME}-targets + DESTINATION lib/cmake/${PROJECT_NAME}) + +# Config files for find_package() +include(CMakePackageConfigHelpers) +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" + INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-version.cmake" + VERSION "1.0" + COMPATIBILITY AnyNewerVersion) +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-version.cmake" + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindLibuuid.cmake" + DESTINATION lib/cmake/${PROJECT_NAME}) +export(EXPORT ${PROJECT_NAME}-targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}-targets.cmake") + # Tests if (UUID_BUILD_TESTS) enable_testing() diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in new file mode 100644 index 0000000..7fa5b55 --- /dev/null +++ b/cmake/Config.cmake.in @@ -0,0 +1,16 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) +if (@UUID_SYSTEM_GENERATOR@) + if (WIN32) + elseif (APPLE) + find_dependency(CoreFoundation) + else () + list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) + find_dependency(Libuuid) + endif () +endif () + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake") + +check_required_components(@PROJECT_NAME@) \ No newline at end of file