CMakeLists.txt 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #设置实体名称 ${MODULE_NAME},和实体前缀定义 ${MODULE_PREFIX}
  2. macro(define_moudle _module_name)
  3. set(MODULE_NAME "mod_${_module_name}")
  4. string(TOUPPER "MOD_${MODULE_NAME}" MODULE_PREFIX)
  5. endmacro(define_moudle)
  6. #macro(add_module _module_prefix _module_name)
  7. #endmacro(add_module)
  8. #对于 Windows 设置实体的版本信息
  9. #定义共享库输出
  10. macro(add_module_libraries _module_prefix _module_name _module_version)
  11. string(STRIP ${_module_version} RAW_VERSION_STRING)
  12. set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
  13. string(REGEX REPLACE "${VERSION_REGEX}" "\\1" MOD_VERSION_MAJOR "${RAW_VERSION_STRING}")
  14. string(REGEX REPLACE "${VERSION_REGEX}" "\\2" MOD_VERSION_MINOR "${RAW_VERSION_STRING}")
  15. string(REGEX REPLACE "${VERSION_REGEX}" "\\3" MOD_VERSION_REVISION "${RAW_VERSION_STRING}")
  16. string(REGEX REPLACE "${VERSION_REGEX}" "\\4" MOD_VERSION_SUFFIX "${RAW_VERSION_STRING}")
  17. set(MOD_VERSION "${MOD_VERSION_MAJOR}.${MOD_VERSION_MINOR}.${MOD_VERSION_REVISION}")
  18. set(MOD_API_VERSION "${MOD_VERSION_MAJOR}")
  19. if (MOD_VERSION_SUFFIX)
  20. set(MOD_VERSION_FULL "${MOD_VERSION}-${MOD_VERSION_SUFFIX}")
  21. else()
  22. set(MOD_VERSION_FULL "${MOD_VERSION}")
  23. endif()
  24. if(WIN32)
  25. set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
  26. set (RC_VERSION_MINOR ${MOD_VERSION_MAJOR})
  27. set (RC_VERSION_BUILD ${MOD_VERSION_MINOR})
  28. set (RC_VERSION_PATCH ${MOD_VERSION_REVISION})
  29. set(RC_VERSION_DESCRIPTION "${CMAKE_SHARED_LIBRARY_PREFIX}${_module_name}_${MOD_VERSION_FULL}${CMAKE_SHARED_LIBRARY_SUFFIX}")
  30. configure_file(
  31. ${CMAKE_SOURCE_DIR}/Version.rc.in
  32. ${CMAKE_CURRENT_BINARY_DIR}/version.rc
  33. @ONLY)
  34. set(${_module_prefix}_SRCS ${${_module_prefix}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
  35. endif(WIN32)
  36. add_library(${_module_name} SHARED ${${_module_prefix}_SRCS})
  37. # 设置工程输出路径
  38. if(SIMULATE_DEV_AND_TEST_TEMP)
  39. set_target_properties(${_module_name}
  40. PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/run/version/1.2.3.4/mod")
  41. endif(SIMULATE_DEV_AND_TEST_TEMP)
  42. endmacro(add_module_libraries)
  43. # 设置实体的安装拷贝路径
  44. # 对于 Windows 设置实体项目工程在解决方案的节点
  45. macro(deploy_module _module_prefix _module_name)
  46. install(TARGETS ${_module_name}
  47. RUNTIME DESTINATION "${RVC_MODULE_PATH}"
  48. ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
  49. LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
  50. COMPONENT modules)
  51. set_property(TARGET ${_module_name} PROPERTY FOLDER "module/")
  52. endmacro(deploy_module)
  53. #set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-client)
  54. #set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr freerdp)
  55. #set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} msimg32)
  56. #target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
  57. set(MODULE_BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
  58. # 遍历实体
  59. # file(GLOB module_dirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/*")
  60. # set(module_list "")
  61. # foreach(module_dir ${module_dirs})
  62. # if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_dir})
  63. # list(APPEND module_list ${module_dir})
  64. # endif()
  65. #endforeach()
  66. #foreach(module ${module_list})
  67. # message(STATUS "add module ${module}...")
  68. # add_subdirectory(${module})
  69. #endforeach()
  70. file(GLOB all_valid_subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/CMakeLists.txt")
  71. foreach(dir ${all_valid_subdirs})
  72. if(${dir} MATCHES "^([^/]*)/+CMakeLists.txt")
  73. string(REGEX REPLACE "^([^/]*)/+CMakeLists.txt" "\\1" dir_trimmed ${dir})
  74. message(STATUS "add module ${dir_trimmed}")
  75. add_subdirectory(${dir_trimmed})
  76. endif()
  77. endforeach(dir)