奥特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.

104 wiersze
3.3KB

  1. cmake_minimum_required(VERSION 3.16)
  2. # 项目基本信息
  3. project(AuseftDDSPlugTest VERSION 0.1 LANGUAGES CXX)
  4. # 构建类型设置(如果未指定则默认为Debug)
  5. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
  6. set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "构建类型: Debug 或 Release" FORCE)
  7. endif()
  8. # 基本编译设置
  9. set(CMAKE_CXX_STANDARD 17) # 使用C++17标准
  10. set(CMAKE_CXX_STANDARD_REQUIRED ON) # 强制使用指定的C++标准
  11. set(CMAKE_POSITION_INDEPENDENT_CODE ON) # 生成位置无关代码
  12. set(CMAKE_AUTOMOC ON) # Qt元对象编译器
  13. set(CMAKE_AUTORCC ON) # Qt资源编译器
  14. set(CMAKE_AUTOUIC ON) # Qt UI编译器
  15. # 根据平台设置编译选项
  16. if(WIN32)
  17. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -Wall")
  18. set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # Windows下导出所有符号
  19. else()
  20. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -Wall -Wextra")
  21. endif()
  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_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # 静态库输出目录
  27. # Windows平台特殊处理:确保多配置生成器(如Visual Studio)也将文件输出到正确位置
  28. if(WIN32)
  29. foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
  30. string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
  31. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin)
  32. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin)
  33. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin)
  34. endforeach()
  35. endif()
  36. # 查找必要的包
  37. find_package(OpenGL REQUIRED)
  38. find_package(Qt6 6.8 REQUIRED COMPONENTS
  39. Core # 添加 Core,这是基础组件
  40. Quick
  41. OpenGL
  42. Gui
  43. Qml
  44. )
  45. # 添加接口库
  46. add_library(Interfaces INTERFACE)
  47. target_include_directories(Interfaces INTERFACE ${CMAKE_SOURCE_DIR})
  48. # 添加主可执行文件
  49. qt_add_executable(${PROJECT_NAME}
  50. main.cpp
  51. PluginLoader.cpp
  52. PluginLoader.hpp
  53. MANUAL_FINALIZATION
  54. )
  55. # 添加QML模块
  56. qt_add_qml_module(${PROJECT_NAME}
  57. URI AuseftDDSPlugTest
  58. VERSION 1.0
  59. QML_FILES Main.qml
  60. )
  61. # 设置目标属性
  62. set_target_properties(${PROJECT_NAME} PROPERTIES
  63. WIN32_EXECUTABLE TRUE # Windows下作为GUI应用程序
  64. MACOSX_BUNDLE TRUE # macOS下作为应用程序包
  65. )
  66. # 链接依赖库
  67. target_link_libraries(${PROJECT_NAME} PRIVATE
  68. Interfaces
  69. Qt6::Quick
  70. Qt6::OpenGL
  71. Qt6::Gui # 添加 Gui
  72. Qt6::Qml # 添加 Qml
  73. OpenGL::GL
  74. )
  75. # 添加插件子目录
  76. add_subdirectory(plugins/AQTSampleMachinePlug BEFORE)
  77. # 设置包含目录
  78. target_include_directories(${PROJECT_NAME} PRIVATE
  79. ${CMAKE_SOURCE_DIR}
  80. ${CMAKE_SOURCE_DIR}/plugins
  81. )
  82. # 完成Qt可执行文件设置
  83. qt_finalize_executable(${PROJECT_NAME})
  84. # 输出构建信息
  85. message(STATUS "构建类型: ${CMAKE_BUILD_TYPE}")
  86. message(STATUS "构建目录: ${CMAKE_BINARY_DIR}")