| cmake_minimum_required(VERSION 3.15) |
| project(MathFunctions) |
| |
| # specify the C++ standard |
| set(CMAKE_CXX_STANDARD 11) |
| set(CMAKE_CXX_STANDARD_REQUIRED True) |
| |
| # create library |
| add_library(MathFunctions STATIC MathFunctions.cxx) |
| |
| # add include directories |
| target_include_directories(MathFunctions |
| PUBLIC |
| "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>" |
| "$<INSTALL_INTERFACE:include>" |
| ) |
| |
| # install the target and create export-set |
| install(TARGETS MathFunctions |
| EXPORT MathFunctionsTargets |
| LIBRARY DESTINATION lib |
| ARCHIVE DESTINATION lib |
| RUNTIME DESTINATION bin |
| INCLUDES DESTINATION include |
| ) |
| |
| # install header file |
| install(FILES MathFunctions.h DESTINATION include) |
| |
| # generate and install export file |
| install(EXPORT MathFunctionsTargets |
| FILE MathFunctionsTargets.cmake |
| NAMESPACE MathFunctions:: |
| DESTINATION lib/cmake/MathFunctions |
| ) |
| |
| # include CMakePackageConfigHelpers macro |
| include(CMakePackageConfigHelpers) |
| |
| # set version |
| set(version 3.4.1) |
| |
| set_property(TARGET MathFunctions PROPERTY VERSION ${version}) |
| set_property(TARGET MathFunctions PROPERTY SOVERSION 3) |
| set_property(TARGET MathFunctions PROPERTY |
| INTERFACE_MathFunctions_MAJOR_VERSION 3) |
| set_property(TARGET MathFunctions APPEND PROPERTY |
| COMPATIBLE_INTERFACE_STRING MathFunctions_MAJOR_VERSION |
| ) |
| |
| # generate the version file for the config file |
| write_basic_package_version_file( |
| "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake" |
| VERSION "${version}" |
| COMPATIBILITY AnyNewerVersion |
| ) |
| |
| # create config file |
| configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in |
| "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake" |
| INSTALL_DESTINATION lib/cmake/MathFunctions |
| ) |
| |
| # install config files |
| install(FILES |
| "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake" |
| "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake" |
| DESTINATION lib/cmake/MathFunctions |
| ) |
| |
| # generate the export targets for the build tree |
| export(EXPORT MathFunctionsTargets |
| FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/MathFunctionsTargets.cmake" |
| NAMESPACE MathFunctions:: |
| ) |