diff --git a/CMakeLists.txt b/CMakeLists.txt index b80668d..73b5658 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,18 @@ 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") -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) +option(UUID_ENABLE_INSTALL "Create an install target" ${UUID_MAIN_PROJECT}) # Library target add_library(${PROJECT_NAME} INTERFACE) @@ -43,28 +50,30 @@ if (NOT UUID_USING_CXX20_SPAN) install(DIRECTORY gsl DESTINATION include) 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) 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 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index eb3b0b3..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)