Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 

148 rader
7.4 KiB

  1. # Initialize ######################################################################################
  2. Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE )
  3. Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC )
  4. Include ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS )
  5. Option ( CPPAMQP_INSTALL_HEADER
  6. "Install headers of cppamqp."
  7. ON )
  8. Option ( CPPAMQP_INSTALL_STATIC
  9. "Install static library of cppamqp."
  10. ON )
  11. Option ( CPPAMQP_INSTALL_SHARED
  12. "Install shared library of cppamqp."
  13. ON )
  14. Option ( CPPAMQP_INSTALL_DEBUG
  15. "Install the stripped debug informations of cppamqp."
  16. OFF )
  17. Option ( CPPAMQP_NO_STRIP
  18. "Do not strip debug symbols from binary."
  19. OFF )
  20. Find_Package ( rabbitmq REQUIRED )
  21. Find_Package ( cppcore REQUIRED )
  22. Find_Package ( cpplogging )
  23. If ( cpplogging_FOUND )
  24. Set ( CPPAMQP_HAS_CPPLOGGING true )
  25. EndIf ( )
  26. # Object Library ##################################################################################
  27. Set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
  28. Set ( CPPAMQP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include )
  29. Set ( CPPAMQP_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated/include )
  30. Configure_File ( ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/config.h.in
  31. ${CPPAMQP_GENERATED_INCLUDE_DIR}/cppamqp/config.h )
  32. File ( GLOB_RECURSE CPPAMQP_HEADER_FILES ${CPPAMQP_INCLUDE_DIR}/*.h )
  33. File ( GLOB_RECURSE CPPAMQP_INLINE_FILES ${CPPAMQP_INCLUDE_DIR}/*.inl )
  34. File ( GLOB_RECURSE CPPAMQP_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp )
  35. Add_Library ( cppamqp-objects
  36. OBJECT
  37. ${CPPAMQP_HEADER_FILES}
  38. ${CPPAMQP_INLINE_FILES}
  39. ${CPPAMQP_SOURCE_FILES} )
  40. Target_Include_Directories ( cppamqp-objects
  41. PUBLIC
  42. $<BUILD_INTERFACE:${CPPAMQP_INCLUDE_DIR}>
  43. $<BUILD_INTERFACE:${CPPAMQP_GENERATED_INCLUDE_DIR}>
  44. $<INSTALL_INTERFACE:${CPPAMQP_INSTALL_DIR_INCLUDE}> )
  45. Target_Link_Libraries ( cppamqp-objects
  46. PUBLIC
  47. cppcore::cppcore )
  48. If ( CPPAMQP_HAS_CPPLOGGING )
  49. Target_Link_Libraries ( cppamqp-objects
  50. PUBLIC
  51. cpplogging::cpplogging-shared )
  52. EndIf ( )
  53. # Static Library ##################################################################################
  54. Add_Library ( cppamqp-static STATIC $<TARGET_OBJECTS:cppamqp-objects> )
  55. Set_Target_Properties ( cppamqp-static
  56. PROPERTIES
  57. OUTPUT_NAME "${CPPAMQP_OUTPUTNAME}"
  58. VERSION ${CPPAMQP_VERSION} )
  59. Target_Include_Directories ( cppamqp-static
  60. PUBLIC
  61. $<BUILD_INTERFACE:${CPPAMQP_INCLUDE_DIR}>
  62. $<BUILD_INTERFACE:${CPPAMQP_GENERATED_INCLUDE_DIR}>
  63. $<INSTALL_INTERFACE:${CPPAMQP_INSTALL_DIR_INCLUDE}> )
  64. If ( CPPAMQP_HAS_CPPLOGGING )
  65. Target_Link_Libraries ( cppamqp-static
  66. PUBLIC
  67. rabbitmq::rabbitmq-static
  68. cpplogging::cpplogging-static )
  69. EndIf ( )
  70. # Shared Library ##################################################################################
  71. Add_Library ( cppamqp-shared SHARED $<TARGET_OBJECTS:cppamqp-objects> )
  72. Set_Target_Properties ( cppamqp-shared
  73. PROPERTIES
  74. OUTPUT_NAME "${CPPAMQP_OUTPUTNAME}"
  75. VERSION ${CPPAMQP_VERSION}
  76. SOVERSION ${CPPAMQP_VERSION_SHORT} )
  77. Target_Include_Directories ( cppamqp-shared
  78. PUBLIC
  79. $<BUILD_INTERFACE:${CPPAMQP_INCLUDE_DIR}>
  80. $<BUILD_INTERFACE:${CPPAMQP_GENERATED_INCLUDE_DIR}>
  81. $<INSTALL_INTERFACE:${CPPAMQP_INSTALL_DIR_INCLUDE}> )
  82. If ( CPPAMQP_HAS_CPPLOGGING )
  83. Target_Link_Libraries ( cppamqp-shared
  84. PUBLIC
  85. rabbitmq::rabbitmq-shared
  86. cpplogging::cpplogging-shared )
  87. EndIf ( )
  88. # Optimization ####################################################################################
  89. # pedantic
  90. If ( HAS_PEDANTIC )
  91. Pedantic_Apply_Flags_Target ( cppamqp-objects ALL )
  92. Pedantic_Apply_Flags_Target ( cppamqp-static ALL )
  93. Pedantic_Apply_Flags_Target ( cppamqp-shared ALL )
  94. EndIf ( )
  95. # cotire
  96. If ( HAS_COTIRE )
  97. Cotire ( cppamqp-objects )
  98. Cotire ( cppamqp-static )
  99. Cotire ( cppamqp-shared )
  100. EndIf ( )
  101. # Install #########################################################################################
  102. # Header
  103. If ( CPPAMQP_INSTALL_HEADER )
  104. Install ( FILES ${CPPAMQP_INCLUDE_DIR}/cppamqp.h
  105. DESTINATION ${CPPAMQP_INSTALL_DIR_INCLUDE} )
  106. Install ( DIRECTORY ${CPPAMQP_INCLUDE_DIR}/cppamqp
  107. DESTINATION ${CPPAMQP_INSTALL_DIR_INCLUDE} )
  108. Install ( DIRECTORY ${CPPAMQP_GENERATED_INCLUDE_DIR}/cppamqp
  109. DESTINATION ${CPPAMQP_INSTALL_DIR_INCLUDE} )
  110. EndIf ( )
  111. # Static
  112. If ( CPPAMQP_INSTALL_STATIC )
  113. Install ( TARGETS cppamqp-static
  114. EXPORT cppamqp
  115. DESTINATION ${CPPAMQP_INSTALL_DIR_LIB} )
  116. EndIf ( )
  117. # Shared
  118. If ( CPPAMQP_INSTALL_SHARED )
  119. Install ( TARGETS cppamqp-shared
  120. EXPORT cppamqp
  121. DESTINATION ${CPPAMQP_INSTALL_DIR_LIB} )
  122. EndIf ( )
  123. # Debug
  124. If ( HAS_STRIP_SYMBOLS AND NOT CPPAMQP_NO_STRIP )
  125. Strip_Symbols ( cppamqp-shared CPPAMQP_DBG_FILE )
  126. If ( CPPAMQP_INSTALL_DEBUG )
  127. Install ( FILES ${CPPAMQP_DBG_FILE}
  128. DESTINATION ${CPPAMQP_INSTALL_DIR_LIB} )
  129. EndIf ( )
  130. EndIf ( )