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/4] 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/4] 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) From dfe3d39c105a6a87de05528ce2d94fe23cd3da7d Mon Sep 17 00:00:00 2001 From: Sid Dahiya <53239974+sid-dahiya@users.noreply.github.com> Date: Wed, 18 May 2022 15:24:41 -0700 Subject: [PATCH 3/4] Fix hidden friend issue for MSVC This change is adding the `/Zc:hiddenFriend` option to address strict validation in MSVC 19.32.31328.0 --- test/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cefe4af..0d19a5c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -8,7 +8,7 @@ else () set_target_properties(test_${PROJECT_NAME} PROPERTIES CXX_STANDARD 17) endif () if (WIN32) - target_compile_options(test_${PROJECT_NAME} PRIVATE /EHc) + target_compile_options(test_${PROJECT_NAME} PRIVATE /EHc /Zc:hiddenFriend) target_compile_definitions(test_${PROJECT_NAME} PRIVATE _SCL_SECURE_NO_WARNINGS) elseif (APPLE) target_compile_options(test_${PROJECT_NAME} PRIVATE -fexceptions -g -Wall) @@ -28,4 +28,4 @@ set_tests_properties("test_${PROJECT_NAME}" FAIL_REGULAR_EXPRESSION "Failed \\d+ test cases") set_tests_properties("test_${PROJECT_NAME}" PROPERTIES - TIMEOUT 120) \ No newline at end of file + TIMEOUT 120) From cd9ca5e7d7784821b632461fabb9a16e1337a524 Mon Sep 17 00:00:00 2001 From: Marius Bancila Date: Thu, 19 May 2022 09:04:50 +0300 Subject: [PATCH 4/4] build with VS 2019 & 2022 --- appveyor.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index b156d56..c038b79 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -2,12 +2,21 @@ version: '{build}' environment: matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - CMAKE_GENERATOR: Visual Studio 15 2017 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 + CMAKE_GENERATOR: Visual Studio 16 2019 CMAKE_GENERATOR_PLATFORM: Win32 - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - CMAKE_GENERATOR: Visual Studio 15 2017 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 + CMAKE_GENERATOR: Visual Studio 16 2019 + CMAKE_GENERATOR_PLATFORM: x64 + CMAKE_CLI_FLAGS: -DUUID_SYSTEM_GENERATOR=ON -DUUID_TIME_GENERATOR=ON + + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 + CMAKE_GENERATOR: Visual Studio 17 2022 + CMAKE_GENERATOR_PLATFORM: Win32 + + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 + CMAKE_GENERATOR: Visual Studio 17 2022 CMAKE_GENERATOR_PLATFORM: x64 CMAKE_CLI_FLAGS: -DUUID_SYSTEM_GENERATOR=ON -DUUID_TIME_GENERATOR=ON