48 lines
1.9 KiB
CMake
48 lines
1.9 KiB
CMake
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)
|
||
find_package(VTK REQUIRED) # 来自 VTK_DIR(预编 install 前缀);含 GUISupportQt
|
||
|
||
# 非 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 / QtKeychain:FetchContent 对接官方 Qt(spike#2 接入;体量小,源码编可接受)
|
||
# include(FetchContent)
|
||
# FetchContent_Declare(ads GIT_REPOSITORY https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git GIT_TAG 4.3.1)
|
||
# FetchContent_Declare(qtkeychain GIT_REPOSITORY https://github.com/frankosterfeld/qtkeychain.git GIT_TAG 0.14.3)
|
||
# FetchContent_MakeAvailable(ads qtkeychain)
|
||
|
||
add_subdirectory(src)
|
||
|
||
enable_testing()
|
||
add_subdirectory(tests)
|