奥特QT DDS 插件库
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

140 wiersze
3.8KB

  1. cmake_minimum_required(VERSION 3.16)
  2. # 添加更详细的错误输出
  3. set(CMAKE_VERBOSE_MAKEFILE ON)
  4. message(STATUS "Qt6_DIR is: $ENV{Qt6_DIR}")
  5. message(STATUS "CMAKE_PREFIX_PATH is: $ENV{CMAKE_PREFIX_PATH}")
  6. # 在project声明之前设置构建类型
  7. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
  8. set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE)
  9. set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
  10. endif()
  11. project(AuseftDDSPlugTest VERSION 0.1 LANGUAGES CXX)
  12. # 如果没有指定构建类型,设置为 Debug
  13. if(NOT CMAKE_BUILD_TYPE)
  14. set(CMAKE_BUILD_TYPE Debug)
  15. endif()
  16. # 基本设置
  17. set(CMAKE_CXX_STANDARD 17)
  18. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  19. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  20. # 根据构建类型设置编译选项
  21. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -Wall -Wextra")
  22. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
  23. # 输出目录设置
  24. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
  25. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
  26. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
  27. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
  28. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
  29. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
  30. # 添加 OpenGL 查找
  31. find_package(OpenGL REQUIRED)
  32. # Qt相关设置
  33. list(APPEND CMAKE_PREFIX_PATH "/home/suzj/Qt/6.8.1/gcc_64")
  34. find_package(Qt6 6.8 REQUIRED COMPONENTS
  35. Quick
  36. OpenGL
  37. Gui
  38. )
  39. # 添加接口目录到包含路径
  40. include_directories(${CMAKE_SOURCE_DIR})
  41. # 在 project 声明之后添加
  42. set(CMAKE_AUTOMOC ON)
  43. set(CMAKE_AUTORCC ON)
  44. set(CMAKE_AUTOUIC ON)
  45. # 设置 Qt 策略
  46. qt_policy(SET QTP0001 NEW)
  47. # 在 project 声明后添加
  48. add_library(Interfaces INTERFACE)
  49. target_include_directories(Interfaces INTERFACE ${CMAKE_SOURCE_DIR})
  50. # 添加接口文件到 IDE 显示
  51. add_custom_target(InterfacesIDE SOURCES
  52. interfaces/plugin_interface.hpp
  53. # 添加其他接口文件...
  54. )
  55. # 修改 qt_add_executable 部分
  56. qt_add_executable(AuseftDDSPlugTest
  57. main.cpp
  58. PluginLoader.cpp
  59. PluginLoader.hpp
  60. MANUAL_FINALIZATION
  61. )
  62. # 修改 qt_add_qml_module 部分
  63. qt_add_qml_module(AuseftDDSPlugTest
  64. URI AuseftDDSPlugTest
  65. VERSION 1.0
  66. QML_FILES
  67. Main.qml
  68. )
  69. set_target_properties(AuseftDDSPlugTest PROPERTIES
  70. QT_QML_LINT_ENABLED TRUE
  71. MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
  72. MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
  73. MACOSX_BUNDLE TRUE
  74. WIN32_EXECUTABLE TRUE
  75. )
  76. # 链接接口库
  77. target_link_libraries(AuseftDDSPlugTest
  78. PRIVATE
  79. Interfaces
  80. Qt6::Quick
  81. Qt6::OpenGL
  82. OpenGL::GL
  83. fastdds
  84. fastcdr
  85. )
  86. include(GNUInstallDirs)
  87. install(TARGETS AuseftDDSPlugTest
  88. BUNDLE DESTINATION .
  89. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  90. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  91. )
  92. add_subdirectory(plugins/AQTSampleMachinePlug BEFORE)
  93. add_subdirectory(plugins/AQTPackageMachinePlug)
  94. # Windows 系统下启用调试信息
  95. if(WIN32)
  96. set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
  97. set(CMAKE_ENABLE_EXPORTS ON)
  98. endif()
  99. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  100. target_compile_options(AuseftDDSPlugTest PRIVATE -g)
  101. endif()
  102. # 在cmake_minimum_required之后添加
  103. set(CMAKE_VERBOSE_MAKEFILE ON)
  104. message(STATUS "CMAKE_BUILD_TYPE is: ${CMAKE_BUILD_TYPE}")
  105. message(STATUS "Build directory is: ${CMAKE_BINARY_DIR}")
  106. # 在文件末尾添加
  107. qt_finalize_executable(AuseftDDSPlugTest)
  108. target_include_directories(AuseftDDSPlugTest
  109. PRIVATE
  110. ${CMAKE_SOURCE_DIR}
  111. ${CMAKE_SOURCE_DIR}/plugins
  112. )