From 1af8e4031c5aee2bf52dd2166231e15d0c80ff0b Mon Sep 17 00:00:00 2001 From: xiaotaiyang <18234077328@163.com> Date: Thu, 5 Feb 2026 07:06:31 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20share?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/share b/share index caa4689..84f9c5b 100644 --- a/share +++ b/share @@ -4,7 +4,71 @@ Host 121.196.200.148 User git IdentityFile C:\Users\Klein\.ssh\id_rsa_kylin_Klein +在将 `ku2d-hmi` 转化为 Qt 工程的过程中,第一步“环境搭建与 CMake 改造”决定了后续开发的底层逻辑。其核心目标是:**在保留原有业务逻辑编译能力的基础上,引入 Qt 的构建套件。** +以下是该阶段的大方向实施步骤: + +--- + +### 1. 开发环境基准对齐 + +在进行代码改动前,必须确保编译器与 Qt 库的版本兼容。 + +* **编译器确认**:根据 Qt 版本选择合适的 C++ 标准(Qt 6 建议使用 C++17 或更高)。 +* **Qt 插件安装**:安装 Qt 本身及其对应的构建工具(如 Ninja 或 Make)。 +* **IDE 准备**:配置 VS Code (配合 CMake 插件) 或 Qt Creator,使其能够正确识别项目的 `CMakeLists.txt`。 + +--- + +### 2. 核心逻辑的“库化”分离 + +为了不破坏原有的业务逻辑,需在构建层面将“计算逻辑”与“界面展示”解耦。 + +* **创建 Core 静态库**:修改 `src/CMakeLists.txt`,将 `protocol`, `business`, `infra`, `transport` 等非 UI 目录打包成一个名为 `ku2d_core` 的静态库。 +* **清理依赖关系**:确保 `ku2d_core` 仅依赖 Protobuf、YAML-CPP 等基础库,而不依赖任何 Qt 组件。 + +--- + +### 3. 根目录 CMake 配置“Qt 化” + +在顶级 `CMakeLists.txt` 中注入 Qt 的生命周期管理逻辑。 + + + +* **声明 Qt 依赖**:使用 `find_package` 指令显式引入 `Qt6` 的 `Core`, `Widgets`, `Gui` 模块。 +* **开启自动处理机制**: +* `set(CMAKE_AUTOMOC ON)`:处理 Qt 信号槽宏。 +* `set(CMAKE_AUTOUIC ON)`:处理 `.ui` 界面文件。 +* `set(CMAKE_AUTORCC ON)`:处理图标等资源文件。 + + + +--- + +### 4. 创建 Qt 专用可执行程序目标 + +在 `src/app` 或新建的 UI 目录中,定义新的构建目标。 + +* **定义可执行文件**:创建一个新的编译目标(如 `ku2d-gui`),将其源文件指向新的 Qt `main.cpp` 和 UI 类。 +* **执行目标链接**:将该目标与 `ku2d_core` 库以及 `Qt6::Widgets` 等库进行链接(Target Link Libraries)。 + +--- + +### 5. 入口函数重定向 + +将程序的控制权从原有的 C++ 循环移交给 Qt 事件循环。 + +* **主入口切换**:废弃原有的 `src/main.cpp` 启动逻辑,编写符合 Qt 规范的 `QApplication` 启动代码。 +* **后台线程初始化**:在 Qt 启动前,确保原有的后端 `Coordinator` 能在非主线程中正确初始化。 + +--- + +### 6. 环境冒烟测试 + +验证构建系统是否闭环。 + +* **编译验证**:尝试执行 CMake Configure 和 Build,确保没有因库冲突导致的链接错误。 +* **空窗运行**:启动程序,若能成功弹出一个空白的 `QMainWindow` 且后台日志正常滚动,则表示第一步环境搭建完成。 {