3.9 KiB
3.9 KiB
chengnan 本地二进制依赖说明
本项目原则:构建项目所用依赖使用二进制包放在项目目录内,不在本机编译安装依赖,不使用系统 GCC 等编译工具链参与本项目构建。
已删除的非目标依赖
已删除之前为 Linux 本地尝试构建而产生的内容:
third_party/opencv-src/:OpenCV 源码third_party/opencv-build/:OpenCV 编译目录third_party/opencv/:由源码编译安装出的 Linux OpenCVthird_party/qt-sdk/:Linux Qt 包third_party/qt:Linux Qt 软链接third_party/opengl-stub/:Linux 构建验证用 stubtools/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.exethird_party/qt-tools/Tools/Ninja/ninja.exethird_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.exeninja.execl.exewindeployqt.exe
因此最终 .exe 需要在 Windows 上执行构建脚本生成。