Update Windows build documentation

This commit is contained in:
luochen570
2026-05-31 12:48:56 +08:00
parent 4e1f73bab7
commit 804a5db77d
5 changed files with 266 additions and 32 deletions

BIN
QtOpenCVImageTool.zip Normal file

Binary file not shown.

46
build_windows.bat Normal file
View File

@@ -0,0 +1,46 @@
@echo off
setlocal
rem Usage:
rem build_windows.bat C:\Qt\6.6.0\msvc2019_64 C:\opencv\build\x64\vc16\lib "Visual Studio 17 2022"
rem build_windows.bat C:\Qt\6.6.0\mingw_64 C:\opencv-mingw\install "MinGW Makefiles"
if "%~1"=="" (
echo Usage: %~nx0 ^<QtDir^> ^<OpenCV_DIR^> [CMakeGenerator]
echo Example MSVC : %~nx0 C:\Qt\6.6.0\msvc2019_64 C:\opencv\build\x64\vc16\lib "Visual Studio 17 2022"
echo Example MinGW: %~nx0 C:\Qt\6.6.0\mingw_64 C:\opencv-mingw\install "MinGW Makefiles"
exit /b 1
)
if "%~2"=="" (
echo Missing OpenCV_DIR.
exit /b 1
)
set QT_DIR=%~1
set OPENCV_DIR=%~2
set GENERATOR=%~3
if "%GENERATOR%"=="" (
set GENERATOR=Visual Studio 17 2022
)
if not exist build-windows (
mkdir build-windows
)
if /I "%GENERATOR%"=="MinGW Makefiles" (
cmake -S . -B build-windows -G "%GENERATOR%" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%QT_DIR%" -DOpenCV_DIR="%OPENCV_DIR%"
) else (
cmake -S . -B build-windows -G "%GENERATOR%" -A x64 -DCMAKE_PREFIX_PATH="%QT_DIR%" -DOpenCV_DIR="%OPENCV_DIR%"
)
if errorlevel 1 exit /b %errorlevel%
cmake --build build-windows --config Release
if errorlevel 1 exit /b %errorlevel%
echo.
echo Build finished.
echo For MSVC, check: build-windows\Release\QtOpenCVImageTool.exe
echo For MinGW, check: build-windows\QtOpenCVImageTool.exe

30
build_wsl_windows.sh Executable file
View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
set -euo pipefail
if ! command -v x86_64-w64-mingw32-g++ >/dev/null 2>&1; then
echo "Missing x86_64-w64-mingw32-g++."
echo "Install it in WSL with: sudo apt install mingw-w64"
exit 1
fi
if [[ "${QT_MINGW_PREFIX:-}" == "" ]]; then
echo "Missing QT_MINGW_PREFIX."
echo "Example: export QT_MINGW_PREFIX=/opt/mxe/usr/x86_64-w64-mingw32.shared/qt6"
exit 1
fi
if [[ "${OpenCV_DIR:-}" == "" ]]; then
echo "Missing OpenCV_DIR."
echo "Example: export OpenCV_DIR=/opt/mxe/usr/x86_64-w64-mingw32.shared/lib/cmake/opencv4"
exit 1
fi
cmake -S . -B build-wsl-windows \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/mingw64.cmake \
-DCMAKE_PREFIX_PATH="${QT_MINGW_PREFIX}" \
-DOpenCV_DIR="${OpenCV_DIR}"
cmake --build build-wsl-windows --config Release
echo "Windows executable should be under build-wsl-windows/."

View File

@@ -0,0 +1,11 @@
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

211
readme.md
View File

@@ -20,72 +20,219 @@
- 图像分类:根据平均亮度和主色通道给出简单分类,同时显示目标数量。
- 线程处理:图像处理工作对象运行在 `QThread` 中,避免阻塞界面。
## Windows 编译运行
## Windows 构建说明
本工程用于构建 Windows 桌面应用程序。建议使用 Qt Creator 打开 `CMakeLists.txt` 构建,编译器可选择 MSVC 或 MinGW但 Qt、OpenCV 和编译器位数必须一致,例如全部使用 64 位
本工程使用 CMake 管理,目标是构建 Windows 桌面应用程序 `QtOpenCVImageTool.exe`。推荐使用 **MSVC 64 位**,因为 OpenCV 官方 Windows 预编译包通常就是 MSVC 版本,配置最省事
### 环境准备
构建时请保持三者一致:
1. 安装 Qt for Windows推荐 Qt 6.x并安装对应的 MinGW 64-bit 或 MSVC 64-bit 组件
2. 安装 OpenCV for Windows或自行用相同编译器编译 OpenCV
3. 安装 CMake。Qt Creator 通常会自带可用的 CMake
- 编译器一致MSVC 对 MSVCMinGW 对 MinGW
- 位数一致:建议全部使用 64 位
- Qt、OpenCV、CMake 使用同一套构建环境
### Qt Creator 构建
如果使用 MSVC则不要混用 MinGW 版 Qt如果使用 MinGW则不要直接使用 OpenCV 官方 MSVC 预编译包。
### 需要安装的软件
1. Visual Studio 2022 或 Visual Studio 2022 Build Tools
安装时勾选:
```text
Desktop development with C++
MSVC v143 x64/x86 build tools
Windows 10 SDK 或 Windows 11 SDK
C++ CMake tools for Windows
```
安装完成后,系统中应能找到类似路径:
```text
C:\Program Files\Microsoft Visual Studio\2022\Community
C:\Program Files\Microsoft Visual Studio\2022\BuildTools
```
2. Qt for Windows
使用 Qt Online Installer 安装 Qt。推荐安装 Qt 6.x并勾选 MSVC 64 位组件,例如:
```text
Qt 6.6.x
MSVC 2019 64-bit 或 MSVC 2022 64-bit
Qt Creator
```
安装完成后Qt 路径通常类似:
```text
C:\Qt\6.6.0\msvc2019_64
C:\Qt\6.6.0\msvc2022_64
```
该目录下应存在:
```text
C:\Qt\6.6.0\msvc2019_64\lib\cmake\Qt6\Qt6Config.cmake
```
3. OpenCV for Windows
可以使用 OpenCV 官方 Windows 包。解压或安装到例如:
```text
C:\opencv
```
常见的 CMake 配置路径是:
```text
C:\opencv\build\x64\vc16\lib
```
该目录下应存在:
```text
C:\opencv\build\x64\vc16\lib\OpenCVConfig.cmake
```
4. CMake
如果安装 Visual Studio 时勾选了 CMake 工具,通常已经够用。也可以单独安装 CMake for Windows。命令行检查
```bat
cmake --version
```
### 推荐方式Qt Creator 构建
1. 打开 Qt Creator。
2. 选择“打开项目”,打开本目录`CMakeLists.txt`
3. 选择 Windows Kit例如 `Desktop Qt 6.x MinGW 64-bit``Desktop Qt 6.x MSVC 64-bit`
4. 如果 CMake 找不到 OpenCV在 CMake 配置中加入:
2. 选择“打开项目”,打开本目录的 `CMakeLists.txt`
3. 选择 Windows Kit例如
```text
Desktop Qt 6.x.x MSVC 2019 64-bit
Desktop Qt 6.x.x MSVC 2022 64-bit
```
4. 如果 CMake 找不到 OpenCV在 Qt Creator 的 CMake 配置项中添加:
```text
OpenCV_DIR=C:/opencv/build/x64/vc16/lib
```
实际路径以你的 OpenCV 安装目录为准。MinGW 自编译 OpenCV 时,应填写包含 `OpenCVConfig.cmake` 的目录
5. 配置完成后点击“构建”
6. 构建成功后会生成 `QtOpenCVImageTool.exe`
7. 在 Qt Creator 中点击“运行”即可启动程序。
5. 点击“构建”并运行。
### 命令行构建MSVC
### 命令行构建示例
打开开始菜单中的:
也可以直接使用项目提供的 `build_windows.bat`
```bat
build_windows.bat C:\Qt\6.6.0\mingw_64 C:\opencv\build "MinGW Makefiles"
```text
x64 Native Tools Command Prompt for VS 2022
```
或 MSVC
进入工程目录,例如
```bat
cd /d D:\QtOpenCVImageTool
```
使用项目提供的脚本构建:
```bat
build_windows.bat C:\Qt\6.6.0\msvc2019_64 C:\opencv\build\x64\vc16\lib "Visual Studio 17 2022"
```
MinGW 示例
如果你的 Qt 是 MSVC 2022 版本,路径可改为
```bat
mkdir build
cd build
cmake .. -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH=C:\Qt\6.6.0\mingw_64 -DOpenCV_DIR=C:\opencv\build
cmake --build . --config Release
build_windows.bat C:\Qt\6.6.0\msvc2022_64 C:\opencv\build\x64\vc16\lib "Visual Studio 17 2022"
```
MSVC 示例
也可以手动执行 CMake
```bat
mkdir build
cd build
mkdir build-windows
cd build-windows
cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_PREFIX_PATH=C:\Qt\6.6.0\msvc2019_64 -DOpenCV_DIR=C:\opencv\build\x64\vc16\lib
cmake --build . --config Release
```
### 运行和发布
MSVC 生成的 exe 通常位于:
在 Windows 上运行生成的 `QtOpenCVImageTool.exe` 时,需要能找到 Qt 和 OpenCV 的 DLL。调试阶段可在 Qt Creator 中直接运行;发布时可使用:
```bat
windeployqt QtOpenCVImageTool.exe
```text
build-windows\Release\QtOpenCVImageTool.exe
```
然后把 OpenCV 的运行库 DLL 一并复制到 exe 所在目录,例如 `opencv_world*.dll` 或相关 `opencv_*.dll`
### 命令行构建MinGW
如果使用 MinGW需要安装 MinGW 版 Qt并准备 MinGW 编译出来的 OpenCV。不要把 MSVC 版 OpenCV 直接给 MinGW 使用。
示例:
```bat
build_windows.bat C:\Qt\6.6.0\mingw_64 C:\opencv-mingw\install "MinGW Makefiles"
```
手动构建:
```bat
mkdir build-windows
cd build-windows
cmake .. -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH=C:\Qt\6.6.0\mingw_64 -DOpenCV_DIR=C:\opencv-mingw\install
cmake --build . --config Release
```
MinGW 生成的 exe 通常位于:
```text
build-windows\QtOpenCVImageTool.exe
```
### 运行和发布
构建出来的 `QtOpenCVImageTool.exe` 运行时需要 Qt 和 OpenCV 的 DLL。开发阶段可以直接在 Qt Creator 中运行;如果要单独拷贝给别人运行,需要把依赖 DLL 一起放到 exe 目录。
MSVC Release 示例:
```bat
cd build-windows\Release
C:\Qt\6.6.0\msvc2019_64\bin\windeployqt.exe QtOpenCVImageTool.exe
copy C:\opencv\build\x64\vc16\bin\opencv_world*.dll .
```
如果 OpenCV 不是 `opencv_world*.dll`,则复制对应的 `opencv_*.dll` 到 exe 所在目录。
MinGW 示例:
```bat
cd build-windows
C:\Qt\6.6.0\mingw_64\bin\windeployqt.exe QtOpenCVImageTool.exe
copy C:\opencv-mingw\bin\opencv_*.dll .
```
### 常见问题
1. `Could not find Qt6`
说明 `CMAKE_PREFIX_PATH` 没有指向 Qt 安装目录。请确认路径类似:
```text
C:\Qt\6.6.0\msvc2019_64
```
2. `Could not find OpenCV`
说明 `OpenCV_DIR` 没有指向包含 `OpenCVConfig.cmake` 的目录。请搜索 `OpenCVConfig.cmake`,并把它所在目录传给 CMake。
3. 程序启动时报缺少 DLL
请运行 `windeployqt`,并把 OpenCV 的 DLL 复制到 exe 所在目录。
4. 链接时报 MSVC/MinGW 相关错误
通常是 Qt、OpenCV、编译器不匹配。MSVC 工程必须使用 MSVC 版 Qt 和 MSVC 版 OpenCVMinGW 工程必须使用 MinGW 版 Qt 和 MinGW 版 OpenCV。
## WSL 中交叉编译 Windows 程序