CMakeLists.txt 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. macro(define_module _module_name)
  2. set(MODULE_NAME "mod_${_module_name}")
  3. set(ENTITY_NAME "${_module_name}")
  4. string(TOUPPER "${MODULE_NAME}" MODULE_PREFIX)
  5. endmacro(define_module)
  6. set(REPLACE_HTTPCLIENT_WITH_CPPRESTSDK TRUE)
  7. #local target
  8. set(RVCCOMM_LIB RVCComm)
  9. set(SPBASE_LIB spbase)
  10. set(TOOLKIT_LIB libtoolkit)
  11. set(WINPR_LIB winpr)
  12. set(MODULE_BASE_LIBS ${SPBASE_LIB} ${TOOLKIT_LIB})
  13. set(MODULE_BASE_ALL_LIBS ${MODULE_BASE_LIBS} ${RVCCOMM_LIB})
  14. if(NOT MSVC)
  15. list(APPEND MODULE_BASE_LIBS ${WINPR_LIB})
  16. endif(NOT MSVC)
  17. set(BUILD_MOUDLE_TEST OFF)
  18. if(BUILD_TESTING)
  19. set(BUILD_MOUDLE_TEST ON)
  20. endif(BUILD_TESTING)
  21. macro(add_module_libraries _module_prefix _module_name _module_version)
  22. string(STRIP ${_module_version} RAW_VERSION_STRING)
  23. set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
  24. string(REGEX REPLACE "${VERSION_REGEX}" "\\1" MOD_VERSION_MAJOR "${RAW_VERSION_STRING}")
  25. string(REGEX REPLACE "${VERSION_REGEX}" "\\2" MOD_VERSION_MINOR "${RAW_VERSION_STRING}")
  26. string(REGEX REPLACE "${VERSION_REGEX}" "\\3" MOD_VERSION_REVISION "${RAW_VERSION_STRING}")
  27. string(REGEX REPLACE "${VERSION_REGEX}" "\\4" MOD_VERSION_SUFFIX "${RAW_VERSION_STRING}")
  28. set(MOD_VERSION "${MOD_VERSION_MAJOR}.${MOD_VERSION_MINOR}.${MOD_VERSION_REVISION}")
  29. set(MOD_API_VERSION "${MOD_VERSION_MAJOR}")
  30. if (MOD_VERSION_SUFFIX)
  31. set(MOD_VERSION_FULL "${MOD_VERSION}-${MOD_VERSION_SUFFIX}")
  32. else()
  33. set(MOD_VERSION_FULL "${MOD_VERSION}")
  34. endif()
  35. message(STATUS "${_module_name} version: ${MOD_VERSION_FULL}")
  36. if(WIN32)
  37. set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
  38. set (RC_VERSION_MINOR ${MOD_VERSION_MAJOR})
  39. set (RC_VERSION_BUILD ${MOD_VERSION_MINOR})
  40. set (RC_VERSION_PATCH ${MOD_VERSION_REVISION})
  41. set(RC_VERSION_DESCRIPTION "${CMAKE_SHARED_LIBRARY_PREFIX}${_module_name}_${MOD_VERSION_FULL}${CMAKE_SHARED_LIBRARY_SUFFIX}")
  42. configure_file(
  43. ${CMAKE_SOURCE_DIR}/Version.rc.in
  44. ${CMAKE_CURRENT_BINARY_DIR}/version.rc
  45. @ONLY)
  46. set(${_module_prefix}_SRCS ${${_module_prefix}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
  47. else()
  48. add_definitions(
  49. -DRVC_VERSION_STR="${RVC_VERSION}"
  50. )
  51. endif(WIN32)
  52. set(${_module_name}_TEST_SRCS)
  53. if(BUILD_MOUDLE_TEST)
  54. file(GLOB ${_module_name}_TEST_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "test/*.cpp")
  55. message(STATUS "add test files: ${${_module_name}_TEST_SRCS}")
  56. endif(BUILD_MOUDLE_TEST)
  57. add_library(${_module_name} SHARED ${${_module_prefix}_SRCS} ${${_module_name}_TEST_SRCS})
  58. target_compile_definitions(${_module_name} PUBLIC "${_module_prefix}_EXPORTS")
  59. target_include_directories(${_module_name} PRIVATE
  60. ${ModuleCommonHeadPath}
  61. ${THIRD_PARTY_BASE_DIR}/Include/CJson
  62. ${OTHER_LIB_BASE_DIR}/libpublicFun)
  63. if(BUILD_MOUDLE_TEST)
  64. target_compile_definitions(${_module_name} PRIVATE "WITH_BUILD_MODULE_TEST")
  65. target_include_directories(${_module_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
  66. endif(BUILD_MOUDLE_TEST)
  67. if(REPLACE_HTTPCLIENT_WITH_CPPRESTSDK)
  68. target_compile_definitions(${_module_name} PRIVATE "WITH_CPPRESTSDK")
  69. target_include_directories(${_module_name} PRIVATE
  70. ${CONAN_INCLUDE_DIRS_JSONCPP}
  71. ${OTHER_LIB_BASE_DIR}/libRestfulFunc)
  72. target_link_directories(${MODULE_NAME} PRIVATE
  73. ${CONAN_LIB_DIRS_JSONCPP}
  74. )
  75. target_link_libraries(${_module_name} RestfulFunc ${CONAN_PKG_LIBS_JSONCPP})
  76. endif(REPLACE_HTTPCLIENT_WITH_CPPRESTSDK)
  77. configure_file("${MODULE_BASE_DIR}/include/modVer.h.in" "${CMAKE_CURRENT_BINARY_DIR}/modVer.h")
  78. target_include_directories(${_module_name} PRIVATE
  79. ${CMAKE_CURRENT_BINARY_DIR}
  80. ${RVC_FRAMEWORK_INCLUDES_DIR}
  81. )
  82. endmacro(add_module_libraries)
  83. macro(deploy_module _module_prefix _module_name)
  84. if(MSVC)
  85. install(TARGETS ${_module_name}
  86. RUNTIME DESTINATION "${RVC_MODULE_PATH}"
  87. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" EXCLUDE_FROM_ALL
  88. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT modules)
  89. else(MSVC)
  90. install(TARGETS ${_module_name}
  91. RUNTIME DESTINATION "${RVC_MODULE_PATH}"
  92. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  93. LIBRARY DESTINATION "${RVC_MODULE_PATH}"
  94. COMPONENT modules)
  95. endif(MSVC)
  96. if (WITH_PDB_SAVE AND MSVC AND BUILD_SHARED_LIBS)
  97. install(FILES ${RVC_PDB_BINARY_DIR}/${_module_name}.pdb DESTINATION ${RVC_PDBSAVE_PATH} COMPONENT symbols)
  98. endif()
  99. set_property(TARGET ${_module_name} PROPERTY FOLDER "module/")
  100. endmacro(deploy_module)
  101. if(BUILD_TESTING)
  102. #add_subdirectory(include/test)
  103. endif()
  104. if(BUILD_MOUDLE_TEST)
  105. message(STATUS "build module test case")
  106. endif(BUILD_MOUDLE_TEST)
  107. #TODO: move to DependencyConanFiles.cmake
  108. if(MSVC)
  109. set(MODULE_CONAN_DEP_LIBS ${CONAN_BIN_DIRS_MISC})
  110. set(MODULE_PLAFORM_SUBDIR win)
  111. else(MSVC)
  112. set(MODULE_PLAFORM_SUBDIR unix)
  113. endif(MSVC)
  114. # rvc_add_all_cmake_subdirectory()
  115. if(MSVC)
  116. add_subdirectory(mod_CardReadAdapter)
  117. add_subdirectory(mod_CardIssuerStand)
  118. add_subdirectory(mod_pinpad)
  119. add_subdirectory(mod_IDCertificate)
  120. add_subdirectory(mod_CustMngrAuth)
  121. add_subdirectory(mod_FingerPrint)
  122. add_subdirectory(mod_customeraware)
  123. add_subdirectory(mod_localmediaplay)
  124. #zhaohu
  125. add_subdirectory(mod_interactivecontrol)
  126. #zhaohu
  127. add_subdirectory(mod_assistantchannel)
  128. add_subdirectory(mod_UpgradeMgr)
  129. add_subdirectory(mod_upload)
  130. add_subdirectory(mod_healthmanager)
  131. add_subdirectory(mod_accessauth)
  132. #will be offline in future cly said
  133. add_subdirectory(mod_guiconsole)
  134. add_subdirectory(mod_CenterSetting)
  135. add_subdirectory(mod_tokenmgr)
  136. add_subdirectory(mod_evtconverter)
  137. #zhaohu
  138. #add_subdirectory(mod_interactivelog)
  139. add_subdirectory(mod_chromium)
  140. add_subdirectory(mod_ScannerSet)
  141. add_subdirectory(mod_HSPScanner)
  142. add_subdirectory(mod_ContactlessCard)
  143. add_subdirectory(mod_gpio)
  144. add_subdirectory(mod_DeviceControl)
  145. #zhaohu
  146. add_subdirectory(mod_facetracking)
  147. #zhaohu
  148. add_subdirectory(mod_initiativetransfer)
  149. #zhaohu
  150. add_subdirectory(mod_interactioncontext)
  151. add_subdirectory(mod_agentip)
  152. #zhaohu
  153. add_subdirectory(mod_counterconnector)
  154. add_subdirectory(mod_countercontext)
  155. #zhaohu
  156. add_subdirectory(mod_mediacontroller)
  157. #zhaohu
  158. add_subdirectory(mod_recorder)
  159. add_subdirectory(mod_snapshot)
  160. #zhaohu
  161. add_subdirectory(mod_screenshot)
  162. add_subdirectory(mod_heartbeat)
  163. add_subdirectory(mod_alarm)
  164. #feiqi
  165. add_subdirectory(mod_RomoteController)
  166. add_subdirectory(mod_ResourceWatcher)
  167. #zhaohu
  168. add_subdirectory(mod_livenessdetection)
  169. add_subdirectory(mod_vtmloader)
  170. #below should be compiled succesufully.
  171. #unknown
  172. add_subdirectory(mod_SalesRecorder)
  173. #zhaohu
  174. add_subdirectory(mod_sipphone)
  175. #pad remove
  176. add_subdirectory(mod_PortableScanner)
  177. add_subdirectory(mod_cardissuerstore)
  178. else()
  179. add_subdirectory(mod_CardReadAdapter)
  180. add_subdirectory(mod_CardIssuerStand)
  181. add_subdirectory(mod_pinpad)
  182. add_subdirectory(mod_IDCertificate)
  183. add_subdirectory(mod_CustMngrAuth)
  184. add_subdirectory(mod_FingerPrint)
  185. add_subdirectory(mod_customeraware)
  186. add_subdirectory(mod_localmediaplay)
  187. add_subdirectory(mod_interactivecontrol)
  188. add_subdirectory(mod_assistantchannel)
  189. add_subdirectory(mod_UpgradeMgr)
  190. add_subdirectory(mod_upload)
  191. add_subdirectory(mod_healthmanager)
  192. add_subdirectory(mod_accessauth)
  193. add_subdirectory(mod_guiconsole)
  194. add_subdirectory(mod_CenterSetting)
  195. add_subdirectory(mod_tokenmgr)
  196. add_subdirectory(mod_evtconverter)
  197. #add_subdirectory(mod_interactivelog)
  198. add_subdirectory(mod_chromium)
  199. add_subdirectory(mod_ScannerSet)
  200. add_subdirectory(mod_HSPScanner)
  201. add_subdirectory(mod_ContactlessCard)
  202. add_subdirectory(mod_gpio)
  203. add_subdirectory(mod_DeviceControl)
  204. add_subdirectory(mod_facetracking)
  205. add_subdirectory(mod_initiativetransfer)
  206. add_subdirectory(mod_interactioncontext)
  207. add_subdirectory(mod_agentip)
  208. add_subdirectory(mod_counterconnector)
  209. add_subdirectory(mod_countercontext)
  210. add_subdirectory(mod_mediacontroller)
  211. add_subdirectory(mod_recorder)
  212. add_subdirectory(mod_snapshot)
  213. add_subdirectory(mod_screenshot)
  214. add_subdirectory(mod_heartbeat)
  215. add_subdirectory(mod_alarm)
  216. add_subdirectory(mod_RomoteController)
  217. add_subdirectory(mod_ResourceWatcher)
  218. add_subdirectory(mod_livenessdetection)
  219. add_subdirectory(mod_vtmloader)
  220. #below should be compiled succesufully.
  221. add_subdirectory(mod_SalesRecorder)
  222. add_subdirectory(mod_sipphone)
  223. endif(MSVC)
  224. message(STATUS "MODULE_CONAN_DEP_LIBS:${MODULE_CONAN_DEP_LIBS}")
  225. set(RVC_CONAN_DEP_LIBS ${RVC_CONAN_DEP_LIBS} ${MODULE_CONAN_DEP_LIBS} PARENT_SCOPE)