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" ${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) target_include_directories(${PROJECT_NAME} INTERFACE $ $) # Using system uuid generator if (UUID_SYSTEM_GENERATOR) target_compile_definitions(${PROJECT_NAME} INTERFACE UUID_SYSTEM_GENERATOR) if (WIN32) elseif (APPLE) find_library(CFLIB CoreFoundation REQUIRED) target_link_libraries(${PROJECT_NAME} INTERFACE ${CFLIB}) else () find_package(Libuuid REQUIRED) if (Libuuid_FOUND) target_include_directories(${PROJECT_NAME} INTERFACE ${Libuuid_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} INTERFACE ${Libuuid_LIBRARIES}) endif () endif () endif () # Using time-based generator if (UUID_TIME_GENERATOR) target_compile_definitions(${PROJECT_NAME} INTERFACE UUID_TIME_GENERATOR) endif() # Using span from std if (NOT UUID_USING_CXX20_SPAN) target_include_directories(${PROJECT_NAME} INTERFACE $ $) install(DIRECTORY gsl DESTINATION include) endif () 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") endif() # Tests if (UUID_BUILD_TESTS) enable_testing() add_subdirectory(test) endif ()