更新 share
This commit is contained in:
64
share
64
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` 且后台日志正常滚动,则表示第一步环境搭建完成。
|
||||
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user