CMakeLists.txt 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. cmake_minimum_required(VERSION 3.15)
  2. project(MathFunctions)
  3. # specify the C++ standard
  4. set(CMAKE_CXX_STANDARD 11)
  5. set(CMAKE_CXX_STANDARD_REQUIRED True)
  6. # create library
  7. add_library(MathFunctions STATIC MathFunctions.cxx)
  8. # add include directories
  9. target_include_directories(MathFunctions
  10. PUBLIC
  11. "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
  12. "$<INSTALL_INTERFACE:include>"
  13. )
  14. # install the target and create export-set
  15. install(TARGETS MathFunctions
  16. EXPORT MathFunctionsTargets
  17. LIBRARY DESTINATION lib
  18. ARCHIVE DESTINATION lib
  19. RUNTIME DESTINATION bin
  20. INCLUDES DESTINATION include
  21. )
  22. # install header file
  23. install(FILES MathFunctions.h DESTINATION include)
  24. # generate and install export file
  25. install(EXPORT MathFunctionsTargets
  26. FILE MathFunctionsTargets.cmake
  27. NAMESPACE MathFunctions::
  28. DESTINATION lib/cmake
  29. )
  30. # include CMakePackageConfigHelpers macro
  31. include(CMakePackageConfigHelpers)
  32. # set version
  33. set(version 3.4.1)
  34. set_property(TARGET MathFunctions PROPERTY VERSION ${version})
  35. set_property(TARGET MathFunctions PROPERTY SOVERSION 3)
  36. set_property(TARGET MathFunctions PROPERTY
  37. INTERFACE_MathFunctions_MAJOR_VERSION 3)
  38. set_property(TARGET MathFunctions APPEND PROPERTY
  39. COMPATIBLE_INTERFACE_STRING MathFunctions_MAJOR_VERSION
  40. )
  41. # generate the version file for the config file
  42. write_basic_package_version_file(
  43. "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake"
  44. VERSION "${version}"
  45. COMPATIBILITY AnyNewerVersion
  46. )
  47. # create config file
  48. configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
  49. "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
  50. INSTALL_DESTINATION lib/cmake
  51. )
  52. # install config files
  53. install(FILES
  54. "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
  55. "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake"
  56. DESTINATION lib/cmake
  57. )
  58. # generate the export targets for the build tree
  59. export(EXPORT MathFunctionsTargets
  60. FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/MathFunctionsTargets.cmake"
  61. NAMESPACE MathFunctions::
  62. )