cmake_minimum_required(VERSION 3.21) project(geopro_desktop LANGUAGES CXX) # ---- Global C++ settings (规约 §3.2: C++17, 可渐进 C++20) ---- set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Qt 自动工具(仅 view/app 层需要 moc/uic/rcc) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) if(MSVC) add_compile_options(/utf-8 /MP /W4 /permissive-) endif() # ===================================================================== # 构建方案②-修订(设计 §11 / K-8 / docs/ENV_SETUP_Windows.md) # - 单一 Qt = 官方 MSVC 预编译 Qt(CMAKE_PREFIX_PATH 指向 D:/Qt/6.11.1/msvc2022_64) # - VTK: 预先用官方 Qt 源码编并 install 到 VTK_DIR(见 ENV_SETUP / Phase 0) # - ADS / QtKeychain: 经 FetchContent 对接同一份官方 Qt(绝不走 vcpkg,避免双 Qt) # - 仅非 Qt 依赖(GDAL/PROJ/OpenSSL/Eigen/...)走 vcpkg # ===================================================================== find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Network Sql Concurrent) # VTK 9 必须指定 COMPONENTS,否则 VTK_LIBRARIES 为空、链接不到任何 VTK。 # 来自 VTK_DIR(external/vtk-install)。随渲染层增补模块(Volume/Filters 等)。 find_package(VTK REQUIRED COMPONENTS GUISupportQt RenderingOpenGL2 InteractionStyle FiltersSources ) # 非 Qt 依赖(vcpkg),随分层逐步启用: # find_package(GDAL CONFIG REQUIRED) # find_package(PROJ CONFIG REQUIRED) # find_package(Eigen3 CONFIG REQUIRED) # find_package(spdlog CONFIG REQUIRED) # find_package(nlohmann_json CONFIG REQUIRED) # find_package(OpenSSL REQUIRED) # ADS(停靠):FetchContent 对接官方 Qt(spike S2)。QtKeychain 待登录层再加。 include(FetchContent) set(ADS_VERSION 4.3.1 CACHE STRING "" FORCE) set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(BUILD_STATIC OFF CACHE BOOL "" FORCE) FetchContent_Declare(ads GIT_REPOSITORY https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git GIT_TAG 4.3.1) FetchContent_MakeAvailable(ads) # QtKeychain(凭证安全存取,规约 §7.4:登录"记住一个月"免登录):FetchContent 对接官方 Qt。 # 必须指定 Qt6(默认走 Qt5 会找不到包);静态链接避免额外 DLL;关测试程序与翻译省依赖。 set(BUILD_WITH_QT6 ON CACHE BOOL "" FORCE) set(BUILD_TEST_APPLICATION OFF CACHE BOOL "" FORCE) set(BUILD_TRANSLATIONS OFF CACHE BOOL "" FORCE) set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) FetchContent_Declare(qtkeychain GIT_REPOSITORY https://github.com/frankosterfeld/qtkeychain.git GIT_TAG v0.14.0) FetchContent_MakeAvailable(qtkeychain) # Qwt 6.2(二维科学图表:数据集详情散点/等值线图)。见 cmake/qwt.cmake 说明。 # 源码 external/qwt-src 已 gitignore,需按 docs/ENV_SETUP 拉取。 if(EXISTS "${CMAKE_SOURCE_DIR}/external/qwt-src/src") include("${CMAKE_SOURCE_DIR}/cmake/qwt.cmake") endif() add_subdirectory(src) enable_testing() add_subdirectory(tests)