添加项目文件。
This commit is contained in:
202
REGENERATE_MIGRATION.md
Normal file
202
REGENERATE_MIGRATION.md
Normal file
@@ -0,0 +1,202 @@
|
||||
# 重新生成项目后的代码移植方法
|
||||
|
||||
这份说明的目标是:
|
||||
|
||||
1. 重新新建一个干净的 Qt Widgets 工程。
|
||||
2. 不沿用旧工程的 `.sln / .vcxproj / .vs / x64`。
|
||||
3. 只把当前已经实现好的业务代码移植过去。
|
||||
|
||||
这样最稳,也最不容易把旧工程状态带进来。
|
||||
|
||||
## 一、建议的新建方式
|
||||
|
||||
在 Visual Studio 里重新新建一个 Qt Widgets Application。
|
||||
|
||||
建议保持这些配置:
|
||||
|
||||
- Qt:`5.13.1`
|
||||
- 平台:`x64`
|
||||
- 编译器:和你当前环境一致
|
||||
- Qt Modules:`core;gui;widgets`
|
||||
|
||||
新工程创建完成后,先确保它能空工程编译通过一次。
|
||||
|
||||
## 二、不要移植的内容
|
||||
|
||||
下面这些不要从旧工程复制过去:
|
||||
|
||||
- `.vs/`
|
||||
- `x64/`
|
||||
- `20260320.*` 这些中间目录
|
||||
- 旧的 `.sln`
|
||||
- 旧的 `.vcxproj`
|
||||
- 旧的 `.vcxproj.filters`
|
||||
- 旧的 `.vcxproj.user`
|
||||
- `Browse.VC.db` 一类缓存
|
||||
|
||||
原则很简单:
|
||||
|
||||
只移植源码,不移植工程缓存和生成物。
|
||||
|
||||
## 三、需要复制过去的目录和文件
|
||||
|
||||
把下面这些直接复制到新工程根目录:
|
||||
|
||||
- `APP/`
|
||||
- `DRI/`
|
||||
- `LOGIC/`
|
||||
- `EXTEN/`
|
||||
- `main.cpp`
|
||||
|
||||
如果你想保留当前这套界面和调试窗口,这些就是最小必需集合。
|
||||
|
||||
## 四、可以不要的旧模板文件
|
||||
|
||||
如果新工程自动生成了自己的 `MainWindow` 或其他模板文件,而你准备直接用当前这套代码,那么这些模板文件可以删掉或从工程里移除。
|
||||
|
||||
当前仓库里这些文件不是主链必需:
|
||||
|
||||
- `_new_keyboard.cpp`
|
||||
- `_new_keyboard.h`
|
||||
- `_new_keyboard.ui`
|
||||
- `_new_keyboard.qrc`
|
||||
|
||||
它们现在没有参与主入口逻辑。
|
||||
|
||||
## 五、把文件加回新工程的方法
|
||||
|
||||
推荐用 Visual Studio 的“添加现有项”。
|
||||
|
||||
### 1. 源文件加入工程
|
||||
|
||||
把这些 `.cpp` 加到新工程:
|
||||
|
||||
- `APP\\APP_ChatGptButton.cpp`
|
||||
- `APP\\APP_DebugPanel.cpp`
|
||||
- `APP\\APP_GlassCard.cpp`
|
||||
- `APP\\APP_KeyButton.cpp`
|
||||
- `APP\\APP_ThemeSwitch.cpp`
|
||||
- `APP\\APP_UIWindow.cpp`
|
||||
- `DRI\\DRI_DeviceState.cpp`
|
||||
- `DRI\\DRI_HidDevice.cpp`
|
||||
- `EXTEN\\EXTEN_Theme.cpp`
|
||||
- `LOGIC\\LOGIC_DeviceSession.cpp`
|
||||
- `LOGIC\\LOGIC_HidProtocol.cpp`
|
||||
- `LOGIC\\LOGIC_KeypadModel.cpp`
|
||||
- `main.cpp`
|
||||
|
||||
### 2. 头文件加入工程
|
||||
|
||||
把这些 `.h` 加到新工程:
|
||||
|
||||
- `APP\\APP_ChatGptButton.h`
|
||||
- `APP\\APP_DebugPanel.h`
|
||||
- `APP\\APP_GlassCard.h`
|
||||
- `APP\\APP_KeyButton.h`
|
||||
- `APP\\APP_ThemeSwitch.h`
|
||||
- `APP\\APP_UIWindow.h`
|
||||
- `DRI\\DRI_DeviceState.h`
|
||||
- `DRI\\DRI_HidDevice.h`
|
||||
- `EXTEN\\EXTEN_Theme.h`
|
||||
- `LOGIC\\LOGIC_DeviceSession.h`
|
||||
- `LOGIC\\LOGIC_HidProtocol.h`
|
||||
- `LOGIC\\LOGIC_KeypadModel.h`
|
||||
|
||||
## 六、新工程需要保留的工程设置
|
||||
|
||||
请确认新工程至少有这些设置:
|
||||
|
||||
### 1. Include 目录
|
||||
|
||||
`C/C++ -> Additional Include Directories`
|
||||
|
||||
至少包含:
|
||||
|
||||
- `$(ProjectDir)`
|
||||
|
||||
这样代码里的这类包含才能工作:
|
||||
|
||||
- `#include "APP/APP_UIWindow.h"`
|
||||
- `#include "DRI/DRI_HidDevice.h"`
|
||||
- `#include "LOGIC/LOGIC_HidProtocol.h"`
|
||||
|
||||
### 2. Qt 模块
|
||||
|
||||
保持:
|
||||
|
||||
- `core`
|
||||
- `gui`
|
||||
- `widgets`
|
||||
|
||||
### 3. 字符集
|
||||
|
||||
保持:
|
||||
|
||||
- `Unicode`
|
||||
|
||||
### 4. UTF-8 编译
|
||||
|
||||
建议保留:
|
||||
|
||||
- `/utf-8`
|
||||
|
||||
## 七、这套代码迁移时有一个好处
|
||||
|
||||
当前新增代码已经特意改成了“普通 C++ 回调”,不是自定义 Qt 信号/槽项目项。
|
||||
|
||||
这意味着迁移时:
|
||||
|
||||
- 不需要额外手工加 `QtMoc` 条目
|
||||
- 不需要改 `.vcxproj` 去注册新 moc 头
|
||||
- 只要把 `.cpp/.h` 作为普通源码文件加进去即可
|
||||
|
||||
这一步会明显降低“工程能编但 VS 打不开”这类问题。
|
||||
|
||||
## 八、HID 相关设置
|
||||
|
||||
`DRI\\DRI_HidDevice.cpp` 里已经用了:
|
||||
|
||||
- `#pragma comment(lib, "hid.lib")`
|
||||
- `#pragma comment(lib, "setupapi.lib")`
|
||||
|
||||
所以一般不需要你再手工去 Linker 里加库。
|
||||
|
||||
只要是 Windows 桌面工程即可。
|
||||
|
||||
## 九、迁移后你应该先验证什么
|
||||
|
||||
迁移完成后,不要先看业务联动,先按这个顺序验证:
|
||||
|
||||
1. 工程能正常打开
|
||||
2. 工程能 `Debug|x64` 编译通过
|
||||
3. 程序能启动
|
||||
4. 主界面正常显示
|
||||
5. 下方调试窗口正常显示
|
||||
6. 能枚举到 `VID=0x1209 / PID=0x0001 / UsagePage=0xFF00 / Usage=0x0002`
|
||||
7. 能看到收到的原始包
|
||||
8. 能看到 `0x04` 包的中文解析
|
||||
|
||||
## 十、最稳的实际操作顺序
|
||||
|
||||
推荐直接按下面顺序做:
|
||||
|
||||
1. 新建一个全新的 Qt Widgets 工程
|
||||
2. 先空工程编译一次
|
||||
3. 关闭 VS
|
||||
4. 把 `APP/DRI/LOGIC/EXTEN/main.cpp` 复制过去
|
||||
5. 删除新模板里不用的 `MainWindow` 一类文件
|
||||
6. 打开新工程
|
||||
7. 用“添加现有项”把上面列出的 `.cpp/.h` 加入工程
|
||||
8. 检查 Qt modules 和 include 目录
|
||||
9. 编译
|
||||
10. 接设备验证调试窗口
|
||||
|
||||
## 十一、如果你想让我继续帮你做
|
||||
|
||||
如果你重新生成了一个新工程目录,我可以直接帮你做这几件事:
|
||||
|
||||
1. 把当前代码拷过去
|
||||
2. 帮你把新 `.vcxproj` 补成可编译状态
|
||||
3. 再做一次编译验证
|
||||
|
||||
你只要把新工程路径告诉我即可。
|
||||
Reference in New Issue
Block a user