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

3.9 KiB
Raw Blame History

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/qtLinux 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

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

关键文件:

third_party/qt-windows-msvc/bin/qmake.exe
third_party/qt-windows-msvc/bin/windeployqt.exe

OpenCV 4.10.0 Windows 官方预编译包

third_party/opencv-windows-extract/opencv/build/
third_party/opencv-windows -> opencv-windows-extract/opencv/build

关键文件:

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 工具包

third_party/qt-tools/

关键文件:

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 二进制

tools/cmake-windows/cmake-3.31.6-windows-x86_64/
tools/cmake-current-windows -> cmake-windows/cmake-3.31.6-windows-x86_64

关键文件:

tools/cmake-current-windows/bin/cmake.exe

Windows Python 二进制与虚拟环境脚本

tools/python-bin/
scripts/setup-python-venv-windows.ps1

说明:

  • tools/python-bin/ 使用 Python 官方 Windows embeddable zip 二进制包解压得到
  • 不使用 uv
  • 如果需要 Python 包,请在 Windows 上运行:
powershell -ExecutionPolicy Bypass -File scripts\setup-python-venv-windows.ps1

该脚本会优先尝试创建:

tools/python-venv/

如果 embeddable Python 不支持 venv,则会在 tools/python-bin/ 内安装 pip/aqtinstall仍然限制在项目目录内。

Windows 推荐构建方式

由于当前 OpenCV 是官方 MSVC vc16 二进制包,推荐使用 MSVC 构建。

在 Windows 上打开:

x64 Native Tools Command Prompt for VS 2019/2022

进入项目目录后运行:

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 上执行构建脚本生成。