module-install.cmake 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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(TARGETS ${OATPP_THIS_MODULE_TARGETS}
  51. EXPORT "${OATPP_MODULE_NAME}Targets"
  52. ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}"
  53. LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/oatpp-${OATPP_MODULE_VERSION}"
  54. RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/oatpp-${OATPP_MODULE_VERSION}"
  55. INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}"
  56. )
  57. install(DIRECTORY ${OATPP_DIRS_TO_INSTALL}
  58. DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/oatpp-${OATPP_MODULE_VERSION}/${OATPP_MODULE_NAME}"
  59. FILES_MATCHING PATTERN "*.hpp"
  60. )
  61. install(EXPORT "${OATPP_MODULE_NAME}Targets"
  62. FILE "${OATPP_MODULE_NAME}Targets.cmake"
  63. NAMESPACE oatpp::
  64. DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
  65. )
  66. include(CMakePackageConfigHelpers)
  67. write_basic_package_version_file("${OATPP_MODULE_NAME}ConfigVersion.cmake"
  68. VERSION ${OATPP_MODULE_VERSION}
  69. COMPATIBILITY ExactVersion ## Use exact version matching.
  70. )
  71. ## Take module-config.cmake.in file in this direcory as a template
  72. configure_package_config_file(
  73. "${CMAKE_CURRENT_LIST_DIR}/module-config.cmake.in"
  74. "${OATPP_MODULE_NAME}Config.cmake"
  75. INSTALL_DESTINATION
  76. "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
  77. PATH_VARS
  78. OATPP_MODULE_NAME
  79. OATPP_MODULE_VERSION
  80. OATPP_MODULE_LIBRARIES
  81. OATPP_MODULE_LIBDIR
  82. NO_CHECK_REQUIRED_COMPONENTS_MACRO
  83. )
  84. install(
  85. FILES
  86. "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}Config.cmake"
  87. "${CMAKE_CURRENT_BINARY_DIR}/${OATPP_MODULE_NAME}ConfigVersion.cmake"
  88. DESTINATION
  89. "${CMAKE_INSTALL_LIBDIR}/cmake/${OATPP_MODULE_NAME}-${OATPP_MODULE_VERSION}"
  90. )