奥特QT DDS 插件库
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

112 lignes
2.7KB

  1. cmake_minimum_required(VERSION 3.16)
  2. project(AQTPackageMachinePlug LANGUAGES CXX)
  3. # 添加更多调试输出
  4. message(STATUS "Current source dir: ${CMAKE_CURRENT_SOURCE_DIR}")
  5. message(STATUS "FastDDS lib dir: ${fastdds_DIR}")
  6. message(STATUS "FastCDR lib dir: ${fastcdr_DIR}")
  7. set(CMAKE_CXX_STANDARD 17)
  8. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  9. set(CMAKE_AUTOMOC ON)
  10. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  11. find_package(Qt6 REQUIRED COMPONENTS Core Quick)
  12. # 添加 FastDDS 依赖
  13. if(NOT fastcdr_FOUND)
  14. find_package(fastcdr 2 REQUIRED)
  15. endif()
  16. if(NOT fastdds_FOUND)
  17. find_package(fastdds 3 REQUIRED)
  18. endif()
  19. # 查找所有 DDS 相关的源文件
  20. file(GLOB DDS_SOURCES
  21. "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp"
  22. "${CMAKE_CURRENT_SOURCE_DIR}/*.cxx"
  23. )
  24. # 查找所有头文件
  25. file(GLOB HEADER_FILES
  26. "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp"
  27. )
  28. # 创建插件库
  29. add_library(AQTPackageMachinePlug SHARED
  30. ${DDS_SOURCES}
  31. ${HEADER_FILES} # 包含所有头文件
  32. )
  33. # 定义导出宏
  34. target_compile_definitions(AQTPackageMachinePlug
  35. PRIVATE
  36. AQTPACKAGEMACHINEPLUG_LIBRARY
  37. QT_PLUGIN
  38. )
  39. # 添加包含目录
  40. target_include_directories(AQTPackageMachinePlug
  41. PRIVATE
  42. ${CMAKE_SOURCE_DIR}
  43. )
  44. target_include_directories(AQTPackageMachinePlug
  45. PUBLIC
  46. ${CMAKE_CURRENT_SOURCE_DIR} # 确保包含当前目录
  47. )
  48. target_link_libraries(AQTPackageMachinePlug
  49. PRIVATE
  50. Qt6::Core
  51. Qt6::Quick
  52. fastdds
  53. fastcdr
  54. )
  55. # 修改属性设置
  56. set_target_properties(AQTPackageMachinePlug PROPERTIES
  57. OUTPUT_NAME "AQTPackageMachinePlug"
  58. LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
  59. RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
  60. PREFIX ""
  61. SUFFIX ".so"
  62. POSITION_INDEPENDENT_CODE ON
  63. # RPATH 设置
  64. SKIP_BUILD_RPATH FALSE
  65. BUILD_WITH_INSTALL_RPATH FALSE
  66. INSTALL_RPATH "$ORIGIN:${CMAKE_INSTALL_PREFIX}/lib"
  67. INSTALL_RPATH_USE_LINK_PATH TRUE
  68. )
  69. # 添加运行时依赖路径
  70. if(UNIX AND NOT APPLE)
  71. set_target_properties(AQTPackageMachinePlug PROPERTIES
  72. INSTALL_RPATH "$ORIGIN:${CMAKE_INSTALL_PREFIX}/lib:/usr/local/lib"
  73. )
  74. endif()
  75. # 如果是调试版本,添加调试符号
  76. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  77. target_compile_options(AQTPackageMachinePlug PRIVATE -g)
  78. endif()
  79. # 调试信息
  80. message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
  81. message(STATUS "Binary Dir: ${CMAKE_BINARY_DIR}")
  82. message(STATUS "Plugin Output Dir: ${CMAKE_BINARY_DIR}/bin")
  83. # 添加一个消息来验证设置
  84. message(STATUS "Plugin name will be: AQTPackageMachinePlug.so")
  85. # 修改安装配置
  86. install(TARGETS AQTPackageMachinePlug
  87. LIBRARY DESTINATION bin
  88. RUNTIME DESTINATION bin
  89. )
  90. # 确保导出符号
  91. if(WIN32)
  92. set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
  93. endif()