cmake_minimum_required(VERSION 3.22) project(skylink_station LANGUAGES CXX) # ============================================================================ # 编译标准和优化选项 # ============================================================================ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set(OpenCV_DIR "D:/app/opencv4_12/opencv/build/x64/vc16/lib") # 如果未指定编译类型,默认为 Release if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) endif() # ============================================================================ # 查找依赖 # ============================================================================ find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Network Concurrent ) find_package(OpenCV REQUIRED COMPONENTS core imgproc) find_package(Threads REQUIRED) # ============================================================================ # 包含目录 # ============================================================================ include_directories( src protocol ) # ============================================================================ # 源文件列表 # ============================================================================ set(SOURCES src/main.cpp src/MainWindow.cpp src/GroundReceiver.cpp src/DataLogger.cpp src/DeviceInfoReceiver.cpp ) set(HEADERS src/MainWindow.h src/GroundReceiver.h src/DataLogger.h src/DeviceInfoReceiver.h src/DeviceInfo.h ) set(UI_FILES forms/MainWindow.ui ) set(RESOURCES resources.qrc ) # ============================================================================ # 创建可执行文件 # ============================================================================ add_executable(skylink_station ${SOURCES} ${HEADERS} ${UI_FILES} ${RESOURCES} ) # ============================================================================ # 链接库 # ============================================================================ target_link_libraries(skylink_station Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Concurrent ${OpenCV_LIBRARIES} Threads::Threads ) # ============================================================================ # 编译选项 # ============================================================================ if(MSVC) target_compile_options(skylink_station PRIVATE /W4) else() target_compile_options(skylink_station PRIVATE -Wall -Wextra -Wpedantic) endif() # ============================================================================ # 安装规则 # ============================================================================ install(TARGETS skylink_station DESTINATION bin)