- cmake_minimum_required(VERSION 3.16)
-
- # 项目基本信息
- project(AuseftDDSPlugTest VERSION 0.1 LANGUAGES CXX)
-
- # 构建类型设置(如果未指定则默认为Debug)
- if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
- set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "构建类型: Debug 或 Release" FORCE)
- endif()
-
- # 基本编译设置
- set(CMAKE_CXX_STANDARD 17) # 使用C++17标准
- set(CMAKE_CXX_STANDARD_REQUIRED ON) # 强制使用指定的C++标准
- set(CMAKE_POSITION_INDEPENDENT_CODE ON) # 生成位置无关代码
- set(CMAKE_AUTOMOC ON) # Qt元对象编译器
- set(CMAKE_AUTORCC ON) # Qt资源编译器
- set(CMAKE_AUTOUIC ON) # Qt UI编译器
-
- # 根据平台设置编译选项
- if(WIN32)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -Wall")
- set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # Windows下导出所有符号
- else()
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -Wall -Wextra")
- endif()
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
-
- # 设置输出目录
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # 可执行文件输出目录
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # 库文件输出目录
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # 静态库输出目录
-
- # Windows平台特殊处理:确保多配置生成器(如Visual Studio)也将文件输出到正确位置
- if(WIN32)
- foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
- string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin)
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin)
- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin)
- endforeach()
- endif()
-
- # 查找必要的包
- find_package(OpenGL REQUIRED)
- find_package(Qt6 6.8 REQUIRED COMPONENTS
- Core # 添加 Core,这是基础组件
- Quick
- OpenGL
- Gui
- Qml
- )
-
- # 添加接口库
- add_library(Interfaces INTERFACE)
- target_include_directories(Interfaces INTERFACE ${CMAKE_SOURCE_DIR})
-
- # 添加主可执行文件
- qt_add_executable(${PROJECT_NAME}
- main.cpp
- PluginLoader.cpp
- PluginLoader.hpp
- MANUAL_FINALIZATION
- )
-
- # 添加QML模块
- qt_add_qml_module(${PROJECT_NAME}
- URI AuseftDDSPlugTest
- VERSION 1.0
- QML_FILES Main.qml
- )
-
- # 设置目标属性
- set_target_properties(${PROJECT_NAME} PROPERTIES
- WIN32_EXECUTABLE TRUE # Windows下作为GUI应用程序
- MACOSX_BUNDLE TRUE # macOS下作为应用程序包
- )
-
- # 链接依赖库
- target_link_libraries(${PROJECT_NAME} PRIVATE
- Interfaces
- Qt6::Quick
- Qt6::OpenGL
- Qt6::Gui # 添加 Gui
- Qt6::Qml # 添加 Qml
- OpenGL::GL
- )
-
- # 添加插件子目录
- add_subdirectory(plugins/AQTSampleMachinePlug BEFORE)
-
- # 设置包含目录
- target_include_directories(${PROJECT_NAME} PRIVATE
- ${CMAKE_SOURCE_DIR}
- ${CMAKE_SOURCE_DIR}/plugins
- )
-
- # 完成Qt可执行文件设置
- qt_finalize_executable(${PROJECT_NAME})
-
- # 输出构建信息
- message(STATUS "构建类型: ${CMAKE_BUILD_TYPE}")
- message(STATUS "构建目录: ${CMAKE_BINARY_DIR}")
-
|