奥特QT DDS 插件库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 2.7KB

5 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. cmake_minimum_required(VERSION 3.16)
  2. project(AQTSampleMachinePlug 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. add_library(AQTSampleMachinePlug SHARED
  26. ${DDS_SOURCES}
  27. AQTSampleMachinePlug.hpp
  28. AQTSampleMachinePlug.json
  29. )
  30. # 定义导出宏
  31. target_compile_definitions(AQTSampleMachinePlug
  32. PRIVATE
  33. AQTSAMPLEMACHINEPLUG_LIBRARY
  34. QT_PLUGIN
  35. )
  36. # 添加包含目录
  37. target_include_directories(AQTSampleMachinePlug
  38. PRIVATE
  39. ${CMAKE_SOURCE_DIR}
  40. )
  41. target_include_directories(AQTSampleMachinePlug
  42. PUBLIC
  43. ${CMAKE_CURRENT_SOURCE_DIR}
  44. )
  45. target_link_libraries(AQTSampleMachinePlug
  46. PRIVATE
  47. Qt6::Core
  48. Qt6::Quick
  49. fastdds
  50. fastcdr
  51. )
  52. # 修改属性设置
  53. set_target_properties(AQTSampleMachinePlug PROPERTIES
  54. OUTPUT_NAME "AQTSampleMachinePlug"
  55. LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
  56. RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
  57. PREFIX ""
  58. SUFFIX ".so"
  59. POSITION_INDEPENDENT_CODE ON
  60. # RPATH 设置
  61. SKIP_BUILD_RPATH FALSE
  62. BUILD_WITH_INSTALL_RPATH FALSE
  63. INSTALL_RPATH "$ORIGIN:${CMAKE_INSTALL_PREFIX}/lib"
  64. INSTALL_RPATH_USE_LINK_PATH TRUE
  65. )
  66. # 添加运行时依赖路径
  67. if(UNIX AND NOT APPLE)
  68. set_target_properties(AQTSampleMachinePlug PROPERTIES
  69. INSTALL_RPATH "$ORIGIN:${CMAKE_INSTALL_PREFIX}/lib:/usr/local/lib"
  70. )
  71. endif()
  72. # 如果是调试版本,添加调试符号
  73. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  74. target_compile_options(AQTSampleMachinePlug PRIVATE -g)
  75. endif()
  76. # 调试信息
  77. message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
  78. message(STATUS "Binary Dir: ${CMAKE_BINARY_DIR}")
  79. message(STATUS "Plugin Output Dir: ${CMAKE_BINARY_DIR}/bin")
  80. # 添加一个消息来验证设置
  81. message(STATUS "Plugin name will be: AQTSampleMachinePlug.so")
  82. # 修改安装配置
  83. install(TARGETS AQTSampleMachinePlug
  84. LIBRARY DESTINATION bin
  85. RUNTIME DESTINATION bin
  86. )
  87. # 确保导出符号
  88. if(WIN32)
  89. set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
  90. endif()