| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #设置实体名称 ${MODULE_NAME},和实体前缀定义 ${MODULE_PREFIX}
- macro(define_moudle _module_name)
- set(MODULE_NAME "mod_${_module_name}")
- string(TOUPPER "${MODULE_NAME}" MODULE_PREFIX)
- endmacro(define_moudle)
- set(MODULE_BASE_LIBS spbase libtoolkit)
- if(NOT MSVC)
- # list(APPEND MODULE_BASE_LIBS winpr)
- endif(NOT MSVC)
- set(MODULE_BASE_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/include ${RVC_TOOLKIT_INCLUDE_DIR})
- set(BUILD_MOUDLE_TEST OFF)
- if(BUILD_TESTING)
- # TODO:
- endif(BUILD_TESTING)
- string(TOLOWER ${BUILD_TYPE_NAME} build_type)
- if (build_type STREQUAL debug)
- set(BUILD_MOUDLE_TEST ON)
- endif()
- #对于 Windows 设置实体的版本信息
- #定义共享库输出
- macro(add_module_libraries _module_prefix _module_name _module_version)
-
- string(STRIP ${_module_version} RAW_VERSION_STRING)
- set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
- string(REGEX REPLACE "${VERSION_REGEX}" "\\1" MOD_VERSION_MAJOR "${RAW_VERSION_STRING}")
- string(REGEX REPLACE "${VERSION_REGEX}" "\\2" MOD_VERSION_MINOR "${RAW_VERSION_STRING}")
- string(REGEX REPLACE "${VERSION_REGEX}" "\\3" MOD_VERSION_REVISION "${RAW_VERSION_STRING}")
- string(REGEX REPLACE "${VERSION_REGEX}" "\\4" MOD_VERSION_SUFFIX "${RAW_VERSION_STRING}")
- set(MOD_VERSION "${MOD_VERSION_MAJOR}.${MOD_VERSION_MINOR}.${MOD_VERSION_REVISION}")
- set(MOD_API_VERSION "${MOD_VERSION_MAJOR}")
- if (MOD_VERSION_SUFFIX)
- set(MOD_VERSION_FULL "${MOD_VERSION}-${MOD_VERSION_SUFFIX}")
- else()
- set(MOD_VERSION_FULL "${MOD_VERSION}")
- endif()
- if(WIN32)
- set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
- set (RC_VERSION_MINOR ${MOD_VERSION_MAJOR})
- set (RC_VERSION_BUILD ${MOD_VERSION_MINOR})
- set (RC_VERSION_PATCH ${MOD_VERSION_REVISION})
- set(RC_VERSION_DESCRIPTION "${CMAKE_SHARED_LIBRARY_PREFIX}${_module_name}_${MOD_VERSION_FULL}${CMAKE_SHARED_LIBRARY_SUFFIX}")
- configure_file(
- ${CMAKE_SOURCE_DIR}/Version.rc.in
- ${CMAKE_CURRENT_BINARY_DIR}/version.rc
- @ONLY)
- set(${_module_prefix}_SRCS ${${_module_prefix}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
- endif(WIN32)
- add_library(${_module_name} SHARED ${${_module_prefix}_SRCS})
- # 添加导出宏定义
- target_compile_definitions(${_module_name} PUBLIC "${_module_prefix}_EXPORTS")
-
- target_include_directories(${_module_name} PRIVATE ${MODULE_BASE_INCLUDES})
- if(BUILD_MOUDLE_TEST)
- target_compile_definitions(${_module_name} PRIVATE "WITH_BUILD_MODULE_TEST")
- target_include_directories(${_module_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
- endif(BUILD_MOUDLE_TEST)
- configure_file("${MODULE_BASE_DIR}/include/modVer.h.in" "${CMAKE_CURRENT_BINARY_DIR}/modVer.h")
- target_include_directories(${_module_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
- # 设置工程输出路径
- if(SIMULATE_DEV_AND_TEST_TEMP)
- set_target_properties(${_module_name}
- PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/run/version/1.2.3.4/mod")
- endif(SIMULATE_DEV_AND_TEST_TEMP)
- endmacro(add_module_libraries)
- # 设置实体的安装拷贝路径
- # 对于 Windows 设置实体项目工程在解决方案的节点
- macro(deploy_module _module_prefix _module_name)
- install(TARGETS ${_module_name}
- RUNTIME DESTINATION "${RVC_MODULE_PATH}"
- ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
- LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
- COMPONENT modules)
- if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
- install(FILES ${RVC_PDB_BINARY_DIR}/${_module_name}.pdb
- DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT symbols)
- endif()
- set_property(TARGET ${_module_name} PROPERTY FOLDER "test/module/")
- endmacro(deploy_module)
- set(MODULE_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
- if(BUILD_MOUDLE_TEST)
- message(STATUS "build module test case")
- endif(BUILD_MOUDLE_TEST)
- # 遍历实体
- file(GLOB all_valid_subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/CMakeLists.txt")
- foreach(dir ${all_valid_subdirs})
- if(${dir} MATCHES "^([^/]*)/+CMakeLists.txt")
- string(REGEX REPLACE "^([^/]*)/+CMakeLists.txt" "\\1" dir_trimmed ${dir})
- message(STATUS "add test module ${dir_trimmed}")
- add_subdirectory(${dir_trimmed})
- endif()
- endforeach(dir)
|