123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- cmake_minimum_required(VERSION 3.23)
- project(Tutorial
- VERSION 1.0.0
- )
- option(TUTORIAL_BUILD_UTILITIES "Build the Tutorial executable" ON)
- option(TUTORIAL_USE_STD_SQRT "Use std::sqrt" OFF)
- option(TUTORIAL_ENABLE_IPO "Check for and use IPO support" ON)
- option(BUILD_TESTING "Enable testing and build tests" ON)
- if(TUTORIAL_ENABLE_IPO)
- include(CheckIPOSupported)
- check_ipo_supported(RESULT result OUTPUT output)
- if(result)
- message("IPO is supported, enabling IPO")
- set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
- else()
- message(WARNING "IPO is not supported: ${output}")
- endif()
- endif()
- if(TUTORIAL_BUILD_UTILITIES)
- add_subdirectory(Tutorial)
- endif()
- if(BUILD_TESTING)
- enable_testing()
- add_subdirectory(Tests)
- endif()
- add_subdirectory(MathFunctions)
- include(GNUInstallDirs)
- install(
- TARGETS MathFunctions OpAdd OpMul OpSub MathLogger SqrtTable
- EXPORT TutorialTargets
- FILE_SET HEADERS
- )
- install(
- EXPORT TutorialTargets
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Tutorial
- NAMESPACE Tutorial::
- )
- include(CMakePackageConfigHelpers)
- write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/TutorialConfigVersion.cmake
- COMPATIBILITY ExactVersion
- )
- install(
- FILES
- cmake/TutorialConfig.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/TutorialConfigVersion.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Tutorial
- )
|