module-install.cmake 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #######################################################################################
  2. ## Set module properties
  3. ## all oatpp modules should have the same installation procedure
  4. ##
  5. ## installation tree:
  6. ##
  7. ## prefix/
  8. ## |
  9. ## |- include/oatpp-<version>/<module-name>
  10. ## - lib/
  11. ## |
  12. ## |- cmake/<module-name>-<version>/
  13. ## | |
  14. ## | |- <module-name>Config.cmake
  15. ## | - <module-name>ConfigVersion.cmake
  16. ## |
  17. ## - oatpp-<version>/
  18. ## |
  19. ## |- lib1.a
  20. ## |- lib2.a
  21. ## - ...
  22. ##
  23. ######################################################################################
  24. message("\n############################################################################")
  25. message("## oatpp-module-install.cmake\n")
  26. message("OATPP_THIS_MODULE_NAME=${OATPP_THIS_MODULE_NAME}")
  27. message("OATPP_THIS_MODULE_VERSION=${OATPP_THIS_MODULE_VERSION}")
  28. message("OATPP_THIS_MODULE_LIBRARIES=${OATPP_THIS_MODULE_LIBRARIES}")
  29. message("OATPP_THIS_MODULE_TARGETS=${OATPP_THIS_MODULE_TARGETS}")
  30. message("OATPP_THIS_MODULE_DIRECTORIES=${OATPP_THIS_MODULE_DIRECTORIES}")
  31. message("\n############################################################################\n")
  32. #######################################################################################
  33. ## Set cache variables to configure module-config.cmake.in template
  34. ## via call to configure_package_config_file
  35. include(GNUInstallDirs)
  36. set(OATPP_MODULE_NAME ${OATPP_THIS_MODULE_NAME} CACHE STRING "oatpp module name")
  37. set(OATPP_MODULE_VERSION "${OATPP_THIS_MODULE_VERSION}" CACHE STRING "oatpp module version")
  38. set(OATPP_MODULE_LIBRARIES
  39. "${OATPP_THIS_MODULE_LIBRARIES}" ## list libraries to find when find_package is called
  40. CACHE INTERNAL "oatpp module libraries"
  41. )
  42. set(OATPP_MODULE_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE STRING "lib folder name")
  43. #######################################################################################
  44. ## calc directories to install (relative to this script)
  45. ## dirs should be in ( relative ../src/<dirs>)
  46. foreach(CURR_DIR ${OATPP_THIS_MODULE_DIRECTORIES})
  47. list(APPEND OATPP_DIRS_TO_INSTALL ${CMAKE_CURRENT_LIST_DIR}/../src/${CURR_DIR})
  48. endforeach()
  49. #######################################################################################
  50. install(
  51. TARGETS ${OATPP_THIS_MODULE_TARGETS}
  52. EXPORT "${OATPP_MODULE_NAME}Targets"
  53. ARCHIVE
  54. DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}"
  55. COMPONENT Devel
  56. LIBRARY
  57. DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}"
  58. COMPONENT Library
  59. RUNTIME
  60. DESTINATION "${CMAKE_INSTALL_BINDIR}/oatpp-${OATPP_MODULE_VERSION}"
  61. COMPONENT Library
  62. INCLUDES
  63. DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}"
  64. )
  65. install(DIRECTORY ${OATPP_DIRS_TO_INSTALL}
  66. DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}"
  67. COMPONENT Devel
  68. FILES_MATCHING PATTERN "*.hpp"
  69. )
  70. install(EXPORT "${OATPP_MODULE_NAME}Targets"
  71. FILE "${OATPP_MODULE_NAME}Targets.cmake"
  72. NAMESPACE oatpp::
  73. DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
  74. COMPONENT Devel
  75. )
  76. include(CMakePackageConfigHelpers)
  77. write_basic_package_version_file("${OATPP_MODULE_NAME}ConfigVersion.cmake"
  78. VERSION ${OATPP_MODULE_VERSION}
  79. COMPATIBILITY ExactVersion ## Use exact version matching.
  80. )
  81. ## Take module-config.cmake.in file in this direcory as a template
  82. configure_package_config_file(
  83. "${CMAKE_CURRENT_LIST_DIR}/module-config.cmake.in"
  84. "${OATPP_MODULE_NAME}Config.cmake"
  85. INSTALL_DESTINATION
  86. "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
  87. PATH_VARS
  88. OATPP_MODULE_NAME
  89. OATPP_MODULE_VERSION
  90. OATPP_MODULE_LIBRARIES
  91. OATPP_MODULE_LIBDIR
  92. NO_CHECK_REQUIRED_COMPONENTS_MACRO
  93. )
  94. install(
  95. FILES
  96. "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}Config.cmake"
  97. "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}ConfigVersion.cmake"
  98. DESTINATION
  99. "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
  100. COMPONENT Devel
  101. )