| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- # Copyright 2016-2018 by Martin Moene
- #
- # https://github.com/martinmoene/expected-lite
- #
- # Distributed under the Boost Software License, Version 1.0.
- # (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- cmake_minimum_required( VERSION 3.5 FATAL_ERROR )
- # expected-lite project and version, updated by script/update-version.py:
- project(
- expected_lite
- VERSION 0.6.2
- # DESCRIPTION "Expected objects in C++11 and later in a single-file header-only library"
- # HOMEPAGE_URL "https://github.com/martinmoene/expected-lite"
- LANGUAGES CXX )
- # Package information:
- set( unit_name "expected" )
- set( package_nspace "nonstd" )
- set( package_name "${unit_name}-lite" )
- set( package_version "${${PROJECT_NAME}_VERSION}" )
- message( STATUS "Project '${PROJECT_NAME}', package '${package_name}' version: '${package_version}'")
- # Toplevel or subproject:
- if ( CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME )
- set( expected_IS_TOPLEVEL_PROJECT TRUE )
- else()
- set( expected_IS_TOPLEVEL_PROJECT FALSE )
- endif()
- # If toplevel project, enable building and performing of tests, disable building of examples:
- option( EXPECTED_LITE_OPT_BUILD_TESTS "Build and perform expected-lite tests" ${expected_IS_TOPLEVEL_PROJECT} )
- option( EXPECTED_LITE_OPT_BUILD_EXAMPLES "Build expected-lite examples" OFF )
- set( EXPEXTED_P0323R "99" STRING "Specify proposal revision compatibility (99: latest)" )
- option( EXPECTED_LITE_OPT_SELECT_STD "Select std::expected" OFF )
- option( EXPECTED_LITE_OPT_SELECT_NONSTD "Select nonstd::expected" OFF )
- # If requested, build and perform tests, build examples:
- if ( EXPECTED_LITE_OPT_BUILD_TESTS )
- enable_testing()
- add_subdirectory( test )
- endif()
- if ( EXPECTED_LITE_OPT_BUILD_EXAMPLES )
- add_subdirectory( example )
- endif()
- #
- # Interface, installation and packaging
- #
- # CMake helpers:
- include( GNUInstallDirs )
- include( CMakePackageConfigHelpers )
- # Interface library:
- add_library(
- ${package_name} INTERFACE )
- add_library(
- ${package_nspace}::${package_name} ALIAS ${package_name} )
- target_include_directories(
- ${package_name}
- INTERFACE
- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
- "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" )
- # Package configuration:
- # Note: package_name and package_target are used in package_config_in
- set( package_folder "${package_name}" )
- set( package_target "${package_name}-targets" )
- set( package_config "${package_name}-config.cmake" )
- set( package_config_in "${package_name}-config.cmake.in" )
- set( package_config_version "${package_name}-config-version.cmake" )
- configure_package_config_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/${package_config_in}"
- "${CMAKE_CURRENT_BINARY_DIR}/${package_config}"
- INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${package_folder}"
- )
- configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/${package_config_version}.in"
- "${CMAKE_CURRENT_BINARY_DIR}/${package_config_version}" @ONLY
- )
- # Installation:
- install(
- TARGETS ${package_name}
- EXPORT ${package_target}
- # INCLUDES DESTINATION "${...}" # already set via target_include_directories()
- )
- install(
- EXPORT ${package_target}
- NAMESPACE ${package_nspace}::
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${package_folder}"
- )
- install(
- FILES "${CMAKE_CURRENT_BINARY_DIR}/${package_config}"
- "${CMAKE_CURRENT_BINARY_DIR}/${package_config_version}"
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${package_folder}"
- )
- install(
- DIRECTORY "include/"
- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
- )
- export(
- EXPORT ${package_target}
- NAMESPACE ${package_nspace}::
- FILE "${CMAKE_CURRENT_BINARY_DIR}/${package_name}-targets.cmake"
- )
- # end of file
|