geopro/CMakeLists.txt

93 lines
4.1 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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-)
# 生成 PDB——即使 Release 优化构建也产出调试符号,使 minidump / 运行期崩溃栈可符号化分析
# (生产桌面端排障必需)。/Zi 编译期调试信息;/DEBUG 链接产 PDB/OPT:REF,ICF 抵消 /DEBUG
# 默认关掉的优化,保持二进制优化+精简。仅非 Debug 配置启用。
add_compile_options($<$<NOT:$<CONFIG:Debug>>:/Zi>)
add_link_options($<$<NOT:$<CONFIG:Debug>>:/DEBUG>
$<$<NOT:$<CONFIG:Debug>>:/OPT:REF>
$<$<NOT:$<CONFIG:Debug>>:/OPT:ICF>)
endif()
# =====================================================================
# 构建方案②-修订(设计 §11 / K-8 / docs/ENV_SETUP_Windows.md
# - 单一 Qt = 官方 MSVC 预编译 QtCMAKE_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_DIRexternal/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 对接官方 Qtspike 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()
# vendored 3DGPRViewer 数据生成链原样拷贝算法零改动geopro_gpr3dv 静态库。
# 链:多通道 .iprh/.iprb → GPRDataModel 立方体 → RadarProcessor 处理。生产管线 A 地基。
add_subdirectory(external/gpr3dviewer)
add_subdirectory(src)
# POC-B headless 度量 CLIgpr_poc。链 io_gpr/core/store/render在真实数据上跑端到端度量。
add_subdirectory(tools/gpr_poc)
# gpr3dv 冒烟 CLI走 vendored 原版 APIloadImpulseMultiChannel → buildVolumeData → runPipeline
add_subdirectory(tools/gpr3dv_smoke)
enable_testing()
add_subdirectory(tests)