From 4102ff3b740553c80e4dafdd2a24042fe16fcb9f Mon Sep 17 00:00:00 2001 From: luochen570 <1160510664@qq.com> Date: Sun, 31 May 2026 12:20:24 +0800 Subject: [PATCH] Add Windows build helper --- .gitignore | 1 + QtOpenCVImageTool.zip | Bin 7553 -> 8274 bytes build_windows.bat | 42 ++++++++++++++++++++++++++++++++++++++++++ readme.md | 12 ++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 build_windows.bat diff --git a/.gitignore b/.gitignore index e59e1fe..434fa81 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ build/ +build-windows/ cmake-build-*/ .qt/ .qtc/ diff --git a/QtOpenCVImageTool.zip b/QtOpenCVImageTool.zip index 194aaccfad65a99ec83a91606d5401a8095b5f99..d163681115a0dc8f7b115a49e63414252abfc32c 100644 GIT binary patch delta 2754 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 J6dV8m003CN+ou2k diff --git a/build_windows.bat b/build_windows.bat new file mode 100644 index 0000000..6809b6c --- /dev/null +++ b/build_windows.bat @@ -0,0 +1,42 @@ +@echo off +setlocal + +rem Usage: +rem build_windows.bat C:\Qt\6.6.0\mingw_64 C:\opencv\build +rem build_windows.bat C:\Qt\6.6.0\msvc2019_64 C:\opencv\build\x64\vc16\lib "Visual Studio 17 2022" + +if "%~1"=="" ( + echo Usage: %~nx0 ^ ^ [CMakeGenerator] + echo Example MinGW: %~nx0 C:\Qt\6.6.0\mingw_64 C:\opencv\build "MinGW Makefiles" + echo Example MSVC : %~nx0 C:\Qt\6.6.0\msvc2019_64 C:\opencv\build\x64\vc16\lib "Visual Studio 17 2022" + 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=MinGW Makefiles +) + +if not exist build-windows ( + mkdir build-windows +) + +cmake -S . -B build-windows -G "%GENERATOR%" -DCMAKE_BUILD_TYPE=Release -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 If the exe cannot start because DLLs are missing, run: +echo "%QT_DIR%\bin\windeployqt.exe" build-windows\QtOpenCVImageTool.exe +echo Then copy OpenCV runtime DLLs to the exe directory. diff --git a/readme.md b/readme.md index a261511..a7fca5b 100644 --- a/readme.md +++ b/readme.md @@ -47,6 +47,18 @@ OpenCV_DIR=C:/opencv/build/x64/vc16/lib ### 命令行构建示例 +也可以直接使用项目提供的 `build_windows.bat`: + +```bat +build_windows.bat C:\Qt\6.6.0\mingw_64 C:\opencv\build "MinGW Makefiles" +``` + +或 MSVC: + +```bat +build_windows.bat C:\Qt\6.6.0\msvc2019_64 C:\opencv\build\x64\vc16\lib "Visual Studio 17 2022" +``` + MinGW 示例: ```bat