From 2ff6222e9fcb28e59697e9126ff2ab6ae2d7db69 Mon Sep 17 00:00:00 2001 From: Olivier Le Doeuff Date: Fri, 6 May 2022 17:22:11 +0200 Subject: [PATCH 1/2] Make install optional (expected behavior in CMake FetchContent) --- CMakeLists.txt | 55 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fffb92c..73e924d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,10 @@ cmake_minimum_required(VERSION 3.7.0) + +set(UUID_MAIN_PROJECT OFF) +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(UUID_MAIN_PROJECT ON) +endif() + project(stduuid CXX) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") @@ -6,6 +12,7 @@ option(UUID_BUILD_TESTS "Build the unit tests" ON) option(UUID_SYSTEM_GENERATOR "Enable operating system uuid generator" OFF) option(UUID_TIME_GENERATOR "Enable experimental time-based uuid generator" OFF) option(UUID_USING_CXX20_SPAN "Using span from std instead of gsl" OFF) +option(UUID_ENABLE_INSTALL "Create an install target" ${UUID_MAIN_PROJECT}) # Library target add_library(${PROJECT_NAME} INTERFACE) @@ -40,31 +47,35 @@ if (NOT UUID_USING_CXX20_SPAN) target_include_directories(${PROJECT_NAME} INTERFACE $ $) - install(DIRECTORY gsl DESTINATION include) + if(UUID_ENABLE_INSTALL) + install(DIRECTORY gsl DESTINATION include) + endif() endif () -# Install step and imported target -install(FILES include/uuid.h DESTINATION include) -install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-targets) -install(EXPORT ${PROJECT_NAME}-targets - DESTINATION lib/cmake/${PROJECT_NAME}) +if(UUID_ENABLE_INSTALL) + # Install step and imported target + install(FILES include/uuid.h DESTINATION 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") + # 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") +endif() # Tests if (UUID_BUILD_TESTS) From 44160cca3f30a72fa103b9dc7b240ba00c8fb780 Mon Sep 17 00:00:00 2001 From: Olivier Le Doeuff Date: Fri, 6 May 2022 17:22:56 +0200 Subject: [PATCH 2/2] Deactivate unit test by default when stduuid is not the main CMake project --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 73e924d..87fca3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ endif() project(stduuid CXX) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") -option(UUID_BUILD_TESTS "Build the unit tests" ON) +option(UUID_BUILD_TESTS "Build the unit tests" ${UUID_MAIN_PROJECT}) option(UUID_SYSTEM_GENERATOR "Enable operating system uuid generator" OFF) option(UUID_TIME_GENERATOR "Enable experimental time-based uuid generator" OFF) option(UUID_USING_CXX20_SPAN "Using span from std instead of gsl" OFF)