Files
chengnan/docs/windows/DEPENDENCIES.md
2026-05-29 22:29:38 +08:00

145 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# chengnan 本地二进制依赖说明
本项目原则:**构建项目所用依赖使用二进制包放在项目目录内,不在本机编译安装依赖,不使用系统 GCC 等编译工具链参与本项目构建。**
## 已删除的非目标依赖
已删除之前为 Linux 本地尝试构建而产生的内容:
- `third_party/opencv-src/`OpenCV 源码
- `third_party/opencv-build/`OpenCV 编译目录
- `third_party/opencv/`:由源码编译安装出的 Linux OpenCV
- `third_party/qt-sdk/`Linux Qt 包
- `third_party/qt`Linux Qt 软链接
- `third_party/opengl-stub/`Linux 构建验证用 stub
- `tools/uv/`uv 工具
- `tools/pyenv/`uv 创建的 Python 环境
- `tools/cmake/`Linux CMake 二进制
## 当前保留的 Windows 二进制依赖
### Qt 6.7.3 MSVC 2019 64-bit
```text
third_party/qt-windows-msvc-sdk/6.7.3/msvc2019_64/
third_party/qt-windows-msvc -> qt-windows-msvc-sdk/6.7.3/msvc2019_64
```
关键文件:
```text
third_party/qt-windows-msvc/bin/qmake.exe
third_party/qt-windows-msvc/bin/windeployqt.exe
```
### OpenCV 4.10.0 Windows 官方预编译包
```text
third_party/opencv-windows-extract/opencv/build/
third_party/opencv-windows -> opencv-windows-extract/opencv/build
```
关键文件:
```text
third_party/opencv-windows/x64/vc16/lib/OpenCVConfig.cmake
third_party/opencv-windows/x64/vc16/lib/opencv_world4100.lib
third_party/opencv-windows/x64/vc16/bin/opencv_world4100.dll
```
### Ninja / MinGW 工具包
```text
third_party/qt-tools/
```
关键文件:
```text
third_party/qt-tools/Tools/Ninja/ninja.exe
third_party/qt-tools/Tools/mingw1120_64/bin/g++.exe
```
> 注意:项目保留 MinGW 二进制只是备用。当前推荐 MSVC因为 OpenCV 官方 Windows 二进制是 `vc16`,不能直接给 MinGW 链接。
### Windows CMake 二进制
```text
tools/cmake-windows/cmake-3.31.6-windows-x86_64/
tools/cmake-current-windows -> cmake-windows/cmake-3.31.6-windows-x86_64
```
关键文件:
```text
tools/cmake-current-windows/bin/cmake.exe
```
### Windows Python 二进制与虚拟环境脚本
```text
tools/python-bin/
scripts/setup-python-venv-windows.ps1
```
说明:
- `tools/python-bin/` 使用 Python 官方 Windows embeddable zip 二进制包解压得到
- 不使用 uv
- 如果需要 Python 包,请在 Windows 上运行:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\setup-python-venv-windows.ps1
```
该脚本会优先尝试创建:
```text
tools/python-venv/
```
如果 embeddable Python 不支持 `venv`,则会在 `tools/python-bin/` 内安装 pip/aqtinstall仍然限制在项目目录内。
## Windows 推荐构建方式
由于当前 OpenCV 是官方 MSVC `vc16` 二进制包,推荐使用 MSVC 构建。
在 Windows 上打开:
```text
x64 Native Tools Command Prompt for VS 2019/2022
```
进入项目目录后运行:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\build-windows.ps1 -Toolchain msvc -Deploy
```
脚本会使用项目内:
- `tools/cmake-current-windows/bin/cmake.exe`
- `third_party/qt-tools/Tools/Ninja/ninja.exe`
- `third_party/qt-windows-msvc/`
- `third_party/opencv-windows/`
## 关于“不使用系统工具链”
当前已经避免使用 Linux 系统 GCC 编译本项目,也删除了通过系统 GCC 编译出来的 OpenCV。
但 MSVC 编译器 `cl.exe` 通常来自 Visual Studio Build Tools。微软没有像 Qt/OpenCV 一样提供适合随项目简单解压携带的独立 MSVC 工具链包。因此:
- 如果允许使用 Windows 已安装的 Visual Studio Build Tools可直接构建
- 如果要求连 MSVC 编译器也必须项目内携带:建议改用 MinGW但需要额外准备 MinGW 版 OpenCV 二进制包
## 当前 Linux 服务器限制
当前服务器是 Linux只能整理 Windows 二进制依赖和脚本,不能直接运行 Windows 的:
- `cmake.exe`
- `ninja.exe`
- `cl.exe`
- `windeployqt.exe`
因此最终 `.exe` 需要在 Windows 上执行构建脚本生成。