build: 切换为方案②-修订(官方 MSVC Qt + 源码 VTK + vcpkg 仅非Qt依赖)
经双专家评审+实机勘验: 原装 D:\Qt\6.11.1 为 MinGW 版(MSVC 不可链), VTK 无 MSVC 预编译须源码编, VS18=14.51 链官方 Qt(v143) ABI 安全(新链旧)。 - vcpkg.json: 移除 qtbase/qttools/vtk/qtkeychain/qt-advanced-docking-system(凡依赖 Qt 者不走 vcpkg), 仅留非 Qt 依赖 - CMakeLists/CMakePresets: 官方 Qt 经 CMAKE_PREFIX_PATH, VTK 经 VTK_DIR(external/vtk-install), ADS/QtKeychain 走 FetchContent - 设计 §11/K-8 + ENV_SETUP 改写为方案②-修订; external/ 加入 .gitignore
This commit is contained in:
parent
feab14de85
commit
c76461609a
|
|
@ -8,6 +8,9 @@ CMakeUserPresets.json
|
|||
/vcpkg_installed/
|
||||
/vcpkg/
|
||||
|
||||
# ---- external source-built deps (方案②-修订: VTK 源码编到 install 前缀) ----
|
||||
/external/
|
||||
|
||||
# ---- Visual Studio / IDE ----
|
||||
.vs/
|
||||
.vscode/
|
||||
|
|
|
|||
|
|
@ -16,18 +16,30 @@ if(MSVC)
|
|||
add_compile_options(/utf-8 /MP /W4 /permissive-)
|
||||
endif()
|
||||
|
||||
# ---- Dependencies(全 vcpkg;见 vcpkg.json / docs/ENV_SETUP_Windows.md)----
|
||||
# =====================================================================
|
||||
# 构建方案②-修订(设计 §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) # 含 GUISupportQt(vtk[qt])→ QVTKOpenGLStereoWidget
|
||||
# 以下依赖随分层逐步启用(spike 后接入业务层):
|
||||
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)
|
||||
# find_package(Qt6Keychain CONFIG REQUIRED)
|
||||
# find_package(qtadvanceddocking-qt6 CONFIG REQUIRED) # ADS, spike#2 接入(端口名以实际为准)
|
||||
|
||||
# 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)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,19 +4,21 @@
|
|||
"configurePresets": [
|
||||
{
|
||||
"name": "msvc-debug",
|
||||
"displayName": "MSVC Debug (vcpkg)",
|
||||
"displayName": "MSVC Debug (官方Qt + vcpkg 非Qt依赖)",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build/debug",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug",
|
||||
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||
"VCPKG_TARGET_TRIPLET": "x64-windows",
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
|
||||
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
|
||||
"CMAKE_PREFIX_PATH": "D:/Qt/6.11.1/msvc2022_64",
|
||||
"VTK_DIR": "${sourceDir}/external/vtk-install/lib/cmake/vtk-9.3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "msvc-release",
|
||||
"displayName": "MSVC Release (vcpkg)",
|
||||
"displayName": "MSVC Release (官方Qt + vcpkg 非Qt依赖)",
|
||||
"inherits": "msvc-debug",
|
||||
"binaryDir": "${sourceDir}/build/release",
|
||||
"cacheVariables": { "CMAKE_BUILD_TYPE": "Release" }
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 72 KiB |
|
|
@ -9,13 +9,12 @@
|
|||
|
||||
## 0. 总览
|
||||
|
||||
四块:① 编译器(VS2022 / MSVC)② Git ③ 依赖管理(vcpkg + CMake)④ 全量依赖(含 Qt/VTK,走 vcpkg)。
|
||||
> ⚠️ **构建方案已改定为「方案②-修订」**(经双专家评审 + 实机勘验)。本文档大部分步骤按此更新;**权威步骤以设计 §11 + `docs/superpowers/plans/2026-06-07-m1-phase0-spikes.md` 为准**。
|
||||
>
|
||||
> **方案②-修订要点**:单一 Qt = **官方 MSVC 预编译 Qt**(`D:\Qt\6.11.1\msvc2022_64`)。**凡依赖 Qt 的组件(VTK/ADS/QtKeychain)都不走 vcpkg**(vcpkg 的 Qt 依赖端口会再编一份 qtbase = 双份冲突):VTK 用官方 Qt 源码编到 install 前缀;ADS/QtKeychain 走 FetchContent;仅非 Qt 依赖(GDAL/PROJ/OpenSSL/Eigen/...)走 vcpkg。
|
||||
> **关键事实**:① 用户原装 `D:\Qt\6.11.1` 是 **MinGW 版**(MSVC 不可链),须在 Qt 维护工具里补装 **MSVC 2022 64-bit** kit;② VTK 无 MSVC 预编译,三方案都必须源码编;③ 本机 VS18 = MSVC 14.51,链官方 Qt(v143)属"新链旧",ABI 安全。
|
||||
|
||||
> **构建方案已定:全 vcpkg(方案 B)。** 原因(已核 vcpkg `ports/vtk/vcpkg.json`):嵌 VTK 进 Qt 必须用 `QVTKOpenGLNativeWidget`/`QVTKOpenGLStereoWidget`(在 VTK 的 `GUISupportQt` 模块),该模块要求 `vtk[qt]`,而 `vtk[qt]` 依赖 vcpkg 的 `qtbase`+`qtdeclarative`。若再叠加 Qt 官方安装器,会出现**两份 Qt(官方 + vcpkg)DLL/ABI 冲突**(典型表现:运行期 plugin 加载失败或崩溃)。故全家共用同一份 vcpkg Qt。
|
||||
>
|
||||
> 代价:首次编译 Qt+VTK 较久(数小时级),用二进制缓存(`VCPKG_BINARY_SOURCES`)缓解;CI 同此方案保证可复现。
|
||||
>
|
||||
> (若确有理由保留官方 Qt,须为 vcpkg 的 vtk/qtkeychain 配 overlay-port 指向官方 Qt、禁止 vcpkg 重复构建 Qt——复杂易错,不推荐。)
|
||||
四块:① 编译器(VS18 / MSVC 14.51)② Git ③ vcpkg(仅非 Qt 依赖)④ 官方 MSVC Qt + 源码 VTK。
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -64,44 +63,57 @@ setx VCPKG_ROOT "C:\dev\vcpkg" # 永久(新开终端生效)
|
|||
|
||||
---
|
||||
|
||||
## 4. Qt(不单独装——随 vcpkg 全量构建)
|
||||
## 4. Qt(官方 MSVC 预编译 kit)
|
||||
|
||||
方案 B 下 **Qt 不用官方安装器**,由 vcpkg 的 `qtbase`/`qttools` 以及 `vtk[qt]` 共同复用同一份 Qt(见 §5)。这样 VTK、QtKeychain、ADS、应用本体全部链接同一 Qt,杜绝双份 Qt 冲突。
|
||||
**用官方安装器,但必须是 MSVC kit**(你原装的 `mingw_64` 在 MSVC 下不可用):
|
||||
|
||||
1. 打开 `D:\Qt\MaintenanceTool.exe` → Add or remove components → 登录 Qt 账号。
|
||||
2. 展开 Qt → Qt 6.11.1,勾选 **MSVC 2022 64-bit**,安装。
|
||||
3. 完成后存在 `D:\Qt\6.11.1\msvc2022_64\lib\cmake\Qt6`(供 `find_package(Qt6)`)。
|
||||
|
||||
CMake 经 `CMAKE_PREFIX_PATH=D:/Qt/6.11.1/msvc2022_64` 找到它(见 §6 预设)。**全链路只此一份 Qt**。
|
||||
|
||||
---
|
||||
|
||||
## 5. 全量依赖:`vcpkg.json`(项目根,M1 清单)
|
||||
## 5. 依赖来源(方案②-修订)
|
||||
|
||||
| 类别 | 组件 | 来源 |
|
||||
|---|---|---|
|
||||
| Qt | qtbase/widgets/network/sql/concurrent/opengl + tools | 官方 MSVC kit(§4) |
|
||||
| VTK | vtk 9.3[qt,opengl](+gdal/proj 可选) | **源码编 → install 前缀**(§5.2) |
|
||||
| Qt 依赖小件 | ADS、QtKeychain | **FetchContent 对接官方 Qt**(§6.2) |
|
||||
| 非 Qt 依赖 | gdal/proj/openssl/eigen3/spdlog/fmt/nlohmann-json/gtest | **vcpkg**(下方 vcpkg.json) |
|
||||
|
||||
### 5.1 `vcpkg.json`(仅非 Qt 依赖)
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "geopro-desktop",
|
||||
"version": "0.1.0",
|
||||
"dependencies": [
|
||||
{ "name": "qtbase", "default-features": false, "features": ["gui", "widgets", "network", "sql", "sql-sqlite", "concurrent", "opengl"] },
|
||||
"qttools",
|
||||
{ "name": "vtk", "default-features": false, "features": ["qt", "opengl", "gdal", "proj"] },
|
||||
"gdal",
|
||||
"proj",
|
||||
"eigen3",
|
||||
"spdlog",
|
||||
"fmt",
|
||||
"nlohmann-json",
|
||||
"openssl",
|
||||
"qtkeychain",
|
||||
"gtest"
|
||||
],
|
||||
"builtin-baseline": "<运行 vcpkg x-update-baseline 自动填入>",
|
||||
"overrides": []
|
||||
"dependencies": ["gdal","proj","eigen3","spdlog","fmt","nlohmann-json","openssl","gtest"]
|
||||
}
|
||||
```
|
||||
- **凡依赖 Qt 的(vtk[qt]/qtkeychain/qt-advanced-docking-system)绝不放进 vcpkg**——否则 vcpkg 会再编一份 qtbase = 双份 Qt 冲突(已核 `ports/vtk/vcpkg.json`)。
|
||||
- `vcpkg x-update-baseline --add-initial-baseline` 锁版本(规约 §5.4)。
|
||||
- 先配 `VCPKG_BINARY_SOURCES` 二进制缓存(实测当前为空),省 GDAL/PROJ 重编。
|
||||
|
||||
说明:
|
||||
- **`vtk[qt]`** 拉入 vcpkg `qtbase`+`qtdeclarative`(已核 vcpkg `ports/vtk/vcpkg.json`);与上面显式声明的 `qtbase` 复用同一份 Qt——这是方案 B 的关键。
|
||||
- **`vtk` 用 `default-features:false` 只选 `qt/opengl/gdal/proj`**,避免默认拉入 netcdf/seacas/libharu/cgns 等重特性,缩短编译。
|
||||
- **ADS(Qt-Advanced-Docking-System)**:vcpkg 端口 `qt-advanced-docking-system`——**端口可用性/对 Qt6 支持需在 spike 阶段先验证**;不可用则改 FetchContent 锁 tag(见 §6 备注)。验证通过后加进 dependencies。
|
||||
- **PCL 不引入**(M1 点规模无需 KD-tree)。
|
||||
- `builtin-baseline`:`vcpkg x-update-baseline --add-initial-baseline` 自动写入,锁版本(规约 §5.4)。
|
||||
- 首次编译 Qt+VTK 久,配 `VCPKG_BINARY_SOURCES`(如本地/网络二进制缓存)显著提速。
|
||||
### 5.2 VTK 源码编到 install 前缀(用官方 Qt)
|
||||
|
||||
```powershell
|
||||
# 在 x64 Native Tools for VS18 命令行
|
||||
git clone --depth 1 --branch v9.3.1 https://gitlab.kitware.com/vtk/vtk.git C:\dev\vtk-src
|
||||
cmake -S C:\dev\vtk-src -B C:\dev\vtk-build -G Ninja `
|
||||
-D CMAKE_BUILD_TYPE=Release `
|
||||
-D VTK_GROUP_ENABLE_Qt=YES `
|
||||
-D VTK_MODULE_ENABLE_VTK_GUISupportQt=YES `
|
||||
-D Qt6_DIR="D:/Qt/6.11.1/msvc2022_64/lib/cmake/Qt6" `
|
||||
-D CMAKE_PREFIX_PATH="D:/Qt/6.11.1/msvc2022_64" `
|
||||
-D BUILD_SHARED_LIBS=ON -D VTK_BUILD_TESTING=OFF -D VTK_BUILD_EXAMPLES=OFF `
|
||||
-D CMAKE_INSTALL_PREFIX="D:/Git/lanbingtech/geopro/external/vtk-install"
|
||||
cmake --build C:\dev\vtk-build --target install
|
||||
```
|
||||
完成后 `external/vtk-install/lib/cmake/vtk-9.3` 供 `find_package(VTK)`(已在 `CMakePresets.json` 设 `VTK_DIR`)。`external/` 已 .gitignore。
|
||||
> 注:VTK 用 Release 编;Debug app 链 Release VTK 在 Windows 通常可行(VTK 不强依赖 Debug CRT 的 STL 边界),若遇 `/MD` vs `/MDd` 冲突,则再出一份 Debug VTK。spike 阶段确认。
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@
|
|||
|
||||
**Tech Stack:** CMake 3.21+ / vcpkg(manifest) / MSVC 2022 / Qt 6.8 / VTK 9.3+ / ADS / GoogleTest。
|
||||
|
||||
**前置条件(由你完成,见 `docs/ENV_SETUP_Windows.md`):** 已装 VS2022(C++ 桌面开发 + AddressSanitizer)、Git、vcpkg 并设 `VCPKG_ROOT`。所有命令在 **x64 Native Tools for VS 2022** 命令行、项目根目录执行。
|
||||
> ⚠️ **本计划部分步骤将按「方案②-修订」更新**(官方 MSVC Qt + 源码 VTK + vcpkg 非 Qt 依赖)。当前 Task 1/3 的"全 vcpkg"描述待改写;**权威构建步骤见设计 §11 + `docs/ENV_SETUP_Windows.md`(§4/§5)**。核心差异:Qt 用官方 MSVC kit(不 vcpkg)、VTK 源码编到 `external/vtk-install`、ADS/QtKeychain 走 FetchContent。
|
||||
|
||||
**前置条件(由你完成,见 `docs/ENV_SETUP_Windows.md`):** 已装 **VS18(MSVC 14.51)**、Git、vcpkg 并设 `VCPKG_ROOT`、**官方 Qt 6.11.1 的 MSVC 2022 64-bit kit**。所有命令在 **x64 Native Tools** 命令行、项目根目录执行。
|
||||
|
||||
**通过判据汇总(三 spike 全绿才进入 Phase 1):**
|
||||
- S1 构建/部署:`cmake --build` 出 `geopro_desktop.exe`,运行显示锥体;exe 目录只有一份 `Qt6*.dll`;`ctest` 通过。
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
| K-5 | M1 三维内容 | ① 基础 + ② dd_voxel(可信体,图分阶段)+ ④ DEM;③ 雷达、⑤ 底图瓦片留 M1.5 |
|
||||
| K-6 | 三维插值实现 | C++ 进程内(IDW 起步),`IInterpolator` 接口隔离、**返回 core 中立类型**;推迟完整插件架构(D-1/D-3) |
|
||||
| K-7 | 坐标系 | **每数据源各记源 CRS + 各自 LocalFrame** → 统一 rebase 到唯一「项目世界系(局部米,含 Z 基准)」;GIS/经纬/底图用 PROJ 实时换算(见 §5) |
|
||||
| K-8 | 构建/部署 | **全 vcpkg(方案 B)**:Qt 与 VTK[qt] 共用同一份 vcpkg Qt,规避双份 Qt DLL/ABI 冲突 |
|
||||
| K-8 | 构建/部署 | **方案②-修订**(经双专家评审+实机勘验改定):单一 Qt = **官方 MSVC 预编译 Qt**(`D:\Qt\6.11.1\msvc2022_64`);**VTK/ADS/QtKeychain 对接该官方 Qt**(VTK 源码编到 install 前缀、ADS/QtKeychain 走 FetchContent),**绝不走 vcpkg**(否则 vcpkg 再拉一份 Qt = 双份);仅非 Qt 依赖(GDAL/PROJ/OpenSSL/Eigen/...)走 vcpkg。**关键事实**:用户原装的 `D:\Qt\6.11.1` 是 **MinGW 版**,MSVC 下不可链,须补装 MSVC kit;VTK 无 MSVC 预编译、三方案均须源码编;VS18=MSVC 14.51 链官方 Qt(v143)属"新链旧"ABI 安全。 |
|
||||
| K-9 | 视图 widget | 评估 **`QVTKOpenGLStereoWidget`(QOpenGLWidget 系)** 优先于 native,缓解 ADS reparent 上下文丢失(spike 验证) |
|
||||
| K-10 | dd_voxel 可信度 | 维持可信体目标;可信度取决于输入数据充分性(≥3 非共线剖面或 3D 网格),列为数据依赖(见 §10、§14) |
|
||||
|
||||
|
|
@ -266,28 +266,33 @@ IDatasetRepository {
|
|||
|
||||
---
|
||||
|
||||
## 11. 构建与依赖(K-8,全 vcpkg)
|
||||
## 11. 构建与依赖(K-8,方案②-修订:官方 MSVC Qt + 源码 VTK + vcpkg 非 Qt 依赖)
|
||||
|
||||
- **构建**:CMake 3.21+ + **vcpkg manifest(全量,含 Qt)**;生成 `compile_commands.json`。MSVC 2022,C++17。
|
||||
- **关键依赖事实**(已核 vcpkg `ports/vtk/vcpkg.json`):`qt` 非 vtk 默认特性;`vtk[qt]` 依赖 `qtbase(gui/opengl/widgets/sql-sqlite)` + `qtdeclarative`。→ 用 `vtk` 时显式开 `qt`,**全家共用同一份 vcpkg Qt**(K-8)。用 `default-features:false` 仅选 `qt/opengl/gdal/proj`,避免拉入 netcdf/seacas/libharu 等重特性。
|
||||
- **构建**:CMake 3.21+。MSVC 工具集 **VS18 / 14.51**(实机),C++17;生成 `compile_commands.json`。
|
||||
- **单一 Qt 纪律(核心)**:全链路只用**一份官方 MSVC 预编译 Qt**(`D:\Qt\6.11.1\msvc2022_64`,经 `CMAKE_PREFIX_PATH`)。**凡依赖 Qt 的组件都不走 vcpkg**(vcpkg 任何 Qt 依赖端口都会再编一份 qtbase = 双份冲突,已核 `ports/vtk/vcpkg.json`:`vtk[qt]`→`qtbase`+`qtdeclarative`)。
|
||||
- **VTK**:无 MSVC 预编译,**必须源码编**。预先用官方 Qt 把 VTK 9.3 配置/编译/`install` 到 `external/vtk-install`(`-DVTK_GROUP_ENABLE_Qt=YES -DQt6_DIR=...`),app 经 `VTK_DIR` `find_package(VTK)`。一次编好、隔离于 app 构建。
|
||||
- **ADS / QtKeychain**:经 **FetchContent** 对接同一份官方 Qt(体量小,源码编可接受),**不走 vcpkg**。
|
||||
- **非 Qt 依赖经 vcpkg**:GDAL/PROJ/OpenSSL/Eigen/spdlog/fmt/nlohmann-json/gtest(这些不拉 Qt)。
|
||||
- **M1 依赖矩阵**:
|
||||
|
||||
| 依赖(vcpkg 名) | 用途 | 许可证 |
|
||||
|---|---|---|
|
||||
| qtbase / qttools / qtdeclarative | UI/网络/SQL/并发(VTK[qt] 亦复用) | LGPLv3(动态)⚠️ 商务 D-2 |
|
||||
| vtk[qt,opengl,gdal,proj] | 三维渲染 + QVTK widget | BSD ✅ |
|
||||
| gdal / proj | DEM/影像/坐标重投影 | MIT 类 ✅ |
|
||||
| qt-advanced-docking-system(端口可用性 spike 验证;不可用则 FetchContent 锁 tag) | 停靠布局 | LGPL v2.1 ✅ |
|
||||
| qtkeychain(共用同一 Qt) | 凭证存储 | BSD ✅ |
|
||||
| openssl | RSA/HTTPS | Apache 2.0 ✅ |
|
||||
| eigen3 | 数值/插值 | MPL2 ✅ |
|
||||
| spdlog / fmt | 日志 | MIT ✅ |
|
||||
| nlohmann-json | JSON | MIT ✅ |
|
||||
| gtest | 单测 | BSD ✅ |
|
||||
| 依赖 | 来源 | 用途 | 许可证 |
|
||||
|---|---|---|---|
|
||||
| Qt 6.11.1(msvc2022_64,预编译) | 官方安装器(MSVC kit) | UI/网络/SQL/并发 | LGPLv3(动态)⚠️ 商务 D-2 |
|
||||
| VTK 9.3([qt,opengl] + gdal/proj 可选) | **源码编→install 前缀** | 三维渲染 + QVTK widget | BSD ✅ |
|
||||
| ADS(Qt-Advanced-Docking-System) | FetchContent(对接官方 Qt) | 停靠布局 | LGPL v2.1 ✅ |
|
||||
| QtKeychain | FetchContent(对接官方 Qt) | 凭证存储 | BSD ✅ |
|
||||
| gdal / proj | vcpkg | DEM/影像/坐标重投影 | MIT 类 ✅ |
|
||||
| openssl | vcpkg | RSA/HTTPS | Apache 2.0 ✅ |
|
||||
| eigen3 | vcpkg(头文件) | 数值/插值 | MPL2 ✅ |
|
||||
| spdlog / fmt | vcpkg | 日志 | MIT ✅ |
|
||||
| nlohmann-json | vcpkg(头文件) | JSON | MIT ✅ |
|
||||
| gtest | vcpkg | 单测 | BSD ✅ |
|
||||
|
||||
- ~~PCL~~:**M1 移除**(点规模不需要)。
|
||||
- 部署:单一 vcpkg 链路(`TARGET_RUNTIME_DLLS` + vcpkg deploy),**不混用 windeploypt 与官方 Qt**(规避双 Qt,M-5)。
|
||||
- 环境从零搭建:见 `docs/ENV_SETUP_Windows.md`(已改为方案 B 为主)。
|
||||
- **ABI**:官方 Qt 为 MSVC 2022(v143)预编译,本机 VS18(14.51)编 VTK/app/ADS/QtKeychain;"新链旧"在 MSVC v14x 兼容区内**安全**,全程动态 CRT `/MD[d]`、Release 链 Release、Debug 链 Debug,不跨配置混链。
|
||||
- 部署:用**官方 Qt 的 `windeployqt`**(`D:\Qt\6.11.1\msvc2022_64\bin\windeployqt.exe`)部署 Qt + 插件;VTK/vcpkg dll 用 `TARGET_RUNTIME_DLLS` 拷贝。确保 exe 目录只有这一份 Qt。
|
||||
- **二进制缓存**:vcpkg 实测无缓存,落地前先配 `VCPKG_BINARY_SOURCES`(省 GDAL/PROJ 等重编)。
|
||||
- 环境从零搭建:见 `docs/ENV_SETUP_Windows.md`(方案②-修订)。
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
15
vcpkg.json
15
vcpkg.json
|
|
@ -1,19 +1,8 @@
|
|||
{
|
||||
"name": "geopro-desktop",
|
||||
"version": "0.1.0",
|
||||
"description": "Geopro 3.0 desktop client (Qt6 + VTK9) - M1",
|
||||
"description": "Geopro 3.0 desktop client (Qt6 + VTK9) - M1. 方案②-修订: 仅非 Qt 依赖走 vcpkg; Qt/VTK/ADS/QtKeychain 对接官方 MSVC Qt(见 docs/ENV_SETUP_Windows.md)",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "qtbase",
|
||||
"default-features": false,
|
||||
"features": ["gui", "widgets", "network", "sql", "sql-sqlite", "concurrent", "opengl"]
|
||||
},
|
||||
"qttools",
|
||||
{
|
||||
"name": "vtk",
|
||||
"default-features": false,
|
||||
"features": ["qt", "opengl", "gdal", "proj"]
|
||||
},
|
||||
"gdal",
|
||||
"proj",
|
||||
"eigen3",
|
||||
|
|
@ -21,8 +10,6 @@
|
|||
"fmt",
|
||||
"nlohmann-json",
|
||||
"openssl",
|
||||
"qtkeychain",
|
||||
"qt-advanced-docking-system",
|
||||
"gtest"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue