Initial Linux Qt OpenCV project

This commit is contained in:
luochen570
2026-05-29 22:29:30 +08:00
commit 81d586c032
22 changed files with 1748 additions and 0 deletions

View File

@@ -0,0 +1,144 @@
# 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 上执行构建脚本生成。