CMakeLists.txt 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. # 非招行开发人员不允许改动本文件!!
  2. if(RVC_VERSION)
  3. set(RVC_INTEGRATE_BUILD TRUE)
  4. else()
  5. project(DevAdapter)
  6. cmake_minimum_required (VERSION 3.8)
  7. endif(RVC_VERSION)
  8. if(MSVC)
  9. set(DIFF_PLATFORM_SUB_DIR "msvc_x86")
  10. else()
  11. set(DIFF_PLATFORM_SUB_DIR "gcc_x64")
  12. endif(MSVC)
  13. if(RVC_INTEGRATE_BUILD)
  14. include_directories(${RVC_COMMON_INCLUDE_DIR})
  15. if(SIMULATE_ON)
  16. rvc_set_library_output_dir("${RVC_INSTALL_PREFIX}${RVC_VENDOR_PATH}")
  17. endif(SIMULATE_ON)
  18. endif(RVC_INTEGRATE_BUILD)
  19. macro(rvc_dev_define_module _module_name)
  20. set(MODULE_NAME "${_module_name}")
  21. string(TOUPPER "${MODULE_NAME}" MODULE_PREFIX)
  22. endmacro(rvc_dev_define_module)
  23. # 工程配置文件
  24. macro(rvc_dev_config_library _module_name _module_prefix)
  25. set(${_module_prefix}_CHARACTERISTIC "${${_module_prefix}_VENDOR}.${${_module_prefix}_VERSION}.${${_module_prefix}_BATCH}")
  26. set(MODULE_FULL_NAME "${_module_name}_${${_module_prefix}_VENDOR}_${${_module_prefix}_VERSION}_${${_module_prefix}_BATCH}")
  27. add_library(${MODULE_FULL_NAME} ${${_module_prefix}_SRCS})
  28. set_target_properties(${MODULE_FULL_NAME} PROPERTIES COMPILE_DEFINITIONS "DEVICEBASE_EXPORTS")
  29. set_target_properties(${MODULE_FULL_NAME} PROPERTIES
  30. OUTPUT_NAME "${_module_name}.${${_module_prefix}_CHARACTERISTIC}")
  31. if(SIMULATE_ON)
  32. set_target_properties(${MODULE_FULL_NAME} PROPERTIES
  33. LIBRARY_OUTPUT_DIRECTORY_DEBUG "${RVC_INSTALL_PREFIX}${RVC_VENDOR_PATH}"
  34. LIBRARY_OUTPUT_DIRECTORY_RELEASE "${RVC_INSTALL_PREFIX}${RVC_VENDOR_PATH}"
  35. )
  36. endif(SIMULATE_ON)
  37. endmacro(rvc_dev_config_library)
  38. # 该宏仅在招行的编译生成环境下才会应用
  39. macro(rvc_dev_target_install _target)
  40. if(RVC_INTEGRATE_BUILD)
  41. if(MSVC)
  42. install(TARGETS ${_target}
  43. RUNTIME DESTINATION "${RVC_VENDOR_PATH}" COMPONENT devadapters
  44. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
  45. LIBRARY DESTINATION "${RVC_VENDOR_PATH}" COMPONENT devadapters
  46. )
  47. else()
  48. install(TARGETS ${_target}
  49. RUNTIME DESTINATION "${RVC_VENDOR_PATH}"
  50. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  51. LIBRARY DESTINATION "${RVC_VENDOR_PATH}"
  52. COMPONENT libraries)
  53. endif(MSVC)
  54. endif(RVC_INTEGRATE_BUILD)
  55. endmacro(rvc_dev_target_install)
  56. macro(rvc_aggereate_runtime_file)
  57. if(RVC_INTEGRATE_BUILD)
  58. set(TEMP_CURRENT_ASSET_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets")
  59. set(TEMP_CURRENT_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/${DIFF_PLATFORM_SUB_DIR}")
  60. set(TEMP_CURRENT_BIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/${DIFF_PLATFORM_SUB_DIR}")
  61. # 添加如下内容用于收录 lib 下的 .so 库 或者 bin 下的 .dll 库 以及 资源文件
  62. set(RVC_VENDOR_DEP_LIB_DIRS ${RVC_VENDOR_DEP_LIB_DIRS}
  63. ${TEMP_CURRENT_BIN_DIR} ${TEMP_CURRENT_ASSET_DIR} PARENT_SCOPE)
  64. if(NOT MSVC)
  65. set(RVC_VENDOR_DEP_LIB_DIRS ${RVC_VENDOR_DEP_LIB_DIRS}
  66. ${TEMP_CURRENT_LIB_DIR} PARENT_SCOPE)
  67. endif(NOT MSVC)
  68. endif(RVC_INTEGRATE_BUILD)
  69. endmacro(rvc_aggereate_runtime_file)
  70. set(DEVADAPTER_INCLUDES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
  71. include_directories(${DEVADAPTER_INCLUDES_DIR})
  72. # 用于收录每一个厂商目录下 bin/*.dll 和 lib/*.so 文件
  73. set(RVC_VENDOR_DEP_LIB_DIRS "")
  74. if(RVC_INTEGRATE_BUILD)
  75. add_subdirectory(self)
  76. endif(RVC_INTEGRATE_BUILD)
  77. add_subdirectory(cmbsz)
  78. if(RVC_INTEGRATE_BUILD)
  79. list(REMOVE_DUPLICATES RVC_VENDOR_DEP_LIB_DIRS)
  80. foreach(dep_dir ${RVC_VENDOR_DEP_LIB_DIRS})
  81. message(STATUS "dep_dir: ${dep_dir}")
  82. file(GLOB RVC_DEP_BIN_FILES "${dep_dir}/*")
  83. message(STATUS "before file: ${RVC_DEP_BIN_FILES}")
  84. list(FILTER RVC_DEP_BIN_FILES EXCLUDE REGEX ".*\.a$")
  85. message(STATUS "after file: ${RVC_DEP_BIN_FILES}")
  86. install(PROGRAMS ${RVC_DEP_BIN_FILES} DESTINATION "${RVC_VENDOR_PATH}" COMPONENT devadapters)
  87. endforeach()
  88. endif(RVC_INTEGRATE_BUILD)