feat(client): 迁移Hub更新客户端实现
This commit is contained in:
+43
-145
@@ -1,175 +1,73 @@
|
||||
# 客户端编译环境和第三方依赖说明
|
||||
# SimCAE Hub 客户端编译环境和第三方依赖说明
|
||||
|
||||
`thirdparty/` 是本机依赖目录,已经被 `.gitignore` 忽略,不会提交到 Git。
|
||||
本文说明 `update-client` 的 Qt/C++ 客户端编译环境。客户端保留 Launcher / Updater / Bootstrap 机制,依赖 Qt、CMake 和 OpenSSL。
|
||||
|
||||
当前客户端构建依赖:
|
||||
## 1. 通用要求
|
||||
|
||||
1. Qt 5.15.2 或兼容的 Qt 5 版本
|
||||
2. OpenSSL
|
||||
| 依赖 | 要求 |
|
||||
| --- | --- |
|
||||
| CMake | 建议 3.20 或更高版本 |
|
||||
| C++ | C++17 |
|
||||
| Qt | Qt 5,至少需要 Core、Network、Gui、Widgets |
|
||||
| OpenSSL | 用于 Manifest RSA-SHA256 验签 |
|
||||
| 编译器 | Windows 推荐 Visual Studio 2022 x64,Linux 推荐 gcc/g++ |
|
||||
|
||||
Windows 下推荐使用 Qt 5.15.2 msvc2019_64 和 OpenSSL-Win64;Linux 下使用系统安装的 Qt/OpenSSL 开发包。
|
||||
项目已提供 CMake Preset:
|
||||
|
||||
先看结论:
|
||||
| Preset | 平台 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| `x64-debug` | Windows | Debug 编译 |
|
||||
| `x64-release` | Windows | Release 编译 |
|
||||
| `linux-x64-debug` | Linux | Debug 编译 |
|
||||
| `linux-x64-release` | Linux | Release 编译 |
|
||||
|
||||
- Windows:配置 Qt 环境变量,把 OpenSSL 复制到 `thirdparty/OpenSSL-Win64`。
|
||||
- Linux:用 apt 安装 Qt/OpenSSL 开发包。
|
||||
- `thirdparty/` 只放本机依赖,不提交 Git。
|
||||
## 2. Windows 环境
|
||||
|
||||
## 1. Qt 配置
|
||||
建议安装:
|
||||
|
||||
### Windows
|
||||
1. Visual Studio 2022,勾选 Desktop development with C++。
|
||||
2. Qt 5 x64,版本可以与当前团队环境保持一致。
|
||||
3. CMake。
|
||||
4. OpenSSL x64。
|
||||
|
||||
Qt 路径由本机环境变量提供。你需要在 Windows 环境变量里配置 Qt 路径,让 CMake 的 `find_package(Qt5 ...)` 能找到 Qt。
|
||||
|
||||
推荐配置用户环境变量 `CMAKE_PREFIX_PATH`:
|
||||
如果 Qt 没有加入环境变量,可以在编译前指定 `CMAKE_PREFIX_PATH` 或 `Qt5_DIR`。示例:
|
||||
|
||||
```powershell
|
||||
[Environment]::SetEnvironmentVariable("CMAKE_PREFIX_PATH", "C:\Qt\5.15.2\msvc2019_64", "User")
|
||||
$env:CMAKE_PREFIX_PATH = "C:\Qt\5.15.2\msvc2019_64"
|
||||
```
|
||||
|
||||
设置完成后,重新打开 PowerShell 或 Visual Studio。
|
||||
OpenSSL 可以放在 `update-client/thirdparty/OpenSSL-Win64`,也可以在配置时通过 `SIMCAE_OPENSSL_ROOT` 指向自定义目录。
|
||||
|
||||
如果只想对当前 PowerShell 窗口临时生效:
|
||||
## 3. Linux 环境
|
||||
|
||||
```powershell
|
||||
$env:CMAKE_PREFIX_PATH="C:\Qt\5.15.2\msvc2019_64"
|
||||
```
|
||||
|
||||
也可以配置更精确的 `Qt5_DIR`:
|
||||
|
||||
```powershell
|
||||
[Environment]::SetEnvironmentVariable("Qt5_DIR", "C:\Qt\5.15.2\msvc2019_64\lib\cmake\Qt5", "User")
|
||||
```
|
||||
|
||||
`CMAKE_PREFIX_PATH` 和 `Qt5_DIR` 二选一即可,推荐使用 `CMAKE_PREFIX_PATH`。
|
||||
|
||||
一般不需要把 `C:\Qt\5.15.2\msvc2019_64\bin` 加入 `Path`。项目构建后会通过 `windeployqt` 复制运行所需的 Qt DLL。
|
||||
|
||||
### Linux
|
||||
|
||||
Linux 下需要安装 Qt5 开发包,让 CMake 能找到 `Qt5::Core`、`Qt5::Network`、`Qt5::Gui`、`Qt5::Widgets`。
|
||||
|
||||
Ubuntu/Debian 示例:
|
||||
Ubuntu 示例:
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential cmake qtbase5-dev qttools5-dev-tools libssl-dev
|
||||
sudo apt install -y build-essential cmake qtbase5-dev qttools5-dev qttools5-dev-tools libssl-dev
|
||||
```
|
||||
|
||||
如果 Qt 安装在自定义目录,可以临时设置:
|
||||
Linux 下通常直接使用系统 OpenSSL;如需指定自定义 OpenSSL,可用 CMake 变量配置。
|
||||
|
||||
```bash
|
||||
export CMAKE_PREFIX_PATH=/path/to/Qt/5.x/gcc_64
|
||||
```
|
||||
## 4. 编译输出
|
||||
|
||||
## 2. OpenSSL 配置
|
||||
Windows Release 可执行文件输出目录:
|
||||
|
||||
### Windows
|
||||
`update-client/out/bin/Release`
|
||||
|
||||
OpenSSL 默认放在:
|
||||
Windows CMake 构建目录:
|
||||
|
||||
```text
|
||||
thirdparty/OpenSSL-Win64
|
||||
```
|
||||
`update-client/out/build/x64-release`
|
||||
|
||||
推荐目录结构:
|
||||
Linux Release 可执行文件输出目录以当前 CMake Preset 和构建脚本为准,SDK 打包时通过 `--source-dir` 指定。
|
||||
|
||||
```text
|
||||
thirdparty/
|
||||
OpenSSL-Win64/
|
||||
include/
|
||||
openssl/
|
||||
lib/
|
||||
VC/
|
||||
x64/
|
||||
MD/
|
||||
MDd/
|
||||
```
|
||||
实际打包 SDK 前,应确认 Release 输出目录中至少包含:
|
||||
|
||||
复制命令示例:
|
||||
1. `Launcher`
|
||||
2. `Updater`
|
||||
3. `Bootstrap`
|
||||
4. 可选的示例 `MainApp`
|
||||
|
||||
```powershell
|
||||
cd C:\Users\admin\Desktop\update-client
|
||||
mkdir thirdparty
|
||||
Copy-Item "C:\Program Files\OpenSSL-Win64" ".\thirdparty\OpenSSL-Win64" -Recurse
|
||||
```
|
||||
最终客户软件包里的 `config/app_config.json` 和 `config/manifest_public_key.pem` 由服务端在发布包上传时生成;`server_config.json` 会编译进 EXE 作为兜底地址,不需要进入 SDK 包。
|
||||
|
||||
如果 OpenSSL 不放在 `thirdparty/`,可以在配置 CMake 时手动指定:
|
||||
|
||||
```powershell
|
||||
cmake -S . -B out\build\x64-Debug `
|
||||
-G "Visual Studio 17 2022" `
|
||||
-A x64 `
|
||||
-DSIMCAE_OPENSSL_ROOT="C:\Program Files\OpenSSL-Win64"
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
Linux 下 CMake 会通过 `find_package(OpenSSL REQUIRED)` 查找系统 OpenSSL。通常安装 `libssl-dev` 即可,不需要 `thirdparty/OpenSSL-Win64`。
|
||||
|
||||
## 3. Windows 重新配置和编译
|
||||
|
||||
如果之前配置过 CMake,建议先删除旧缓存:
|
||||
|
||||
```powershell
|
||||
cd C:\Users\admin\Desktop\update-client
|
||||
Remove-Item out\build -Recurse -Force
|
||||
```
|
||||
|
||||
重新配置:
|
||||
|
||||
```powershell
|
||||
cmake -S . -B out\build\x64-Debug `
|
||||
-G "Visual Studio 17 2022" `
|
||||
-A x64
|
||||
```
|
||||
|
||||
编译:
|
||||
|
||||
```powershell
|
||||
cmake --build out\build\x64-Debug --config Debug
|
||||
```
|
||||
|
||||
## 4. Linux 重新配置和编译
|
||||
|
||||
如果之前配置过 CMake,建议先删除旧缓存:
|
||||
|
||||
```bash
|
||||
cd ~/project/update-client
|
||||
rm -rf out/build/linux-x64-debug out/build/linux-x64-release
|
||||
```
|
||||
|
||||
Debug 构建:
|
||||
|
||||
```bash
|
||||
cmake --preset linux-x64-debug
|
||||
cmake --build --preset linux-x64-debug
|
||||
```
|
||||
|
||||
Release 构建:
|
||||
|
||||
```bash
|
||||
cmake --preset linux-x64-release
|
||||
cmake --build --preset linux-x64-release
|
||||
```
|
||||
|
||||
Linux 构建时会自动使用 `config/app_config.linux.example.json` 作为输出目录里的默认 `config/app_config.json`,可执行程序名不带 `.exe`。
|
||||
|
||||
## 5. 提交注意事项
|
||||
|
||||
不要提交下面这些内容:
|
||||
|
||||
```text
|
||||
thirdparty/
|
||||
.vs/
|
||||
out/
|
||||
build/
|
||||
dist/
|
||||
App/
|
||||
*.exe
|
||||
*.dll
|
||||
*.lib
|
||||
*.pdb
|
||||
```
|
||||
|
||||
这些都属于本机依赖、构建产物或打包产物,不应该进 Git。
|
||||
SDK 打包和客户端功能验证见 `01-客户端接入打包部署指南.md`。
|
||||
|
||||
Reference in New Issue
Block a user