Add WSL Windows cross build script
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
build/
|
||||
build-windows/
|
||||
build-wsl-windows/
|
||||
cmake-build-*/
|
||||
.qt/
|
||||
.qtc/
|
||||
|
||||
Binary file not shown.
30
build_wsl_windows.sh
Executable file
30
build_wsl_windows.sh
Executable 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/."
|
||||
11
cmake/toolchains/mingw64.cmake
Normal file
11
cmake/toolchains/mingw64.cmake
Normal 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)
|
||||
20
readme.md
20
readme.md
@@ -87,6 +87,26 @@ windeployqt QtOpenCVImageTool.exe
|
||||
|
||||
然后把 OpenCV 的运行库 DLL 一并复制到 exe 所在目录,例如 `opencv_world*.dll` 或相关 `opencv_*.dll`。
|
||||
|
||||
## WSL 中交叉编译 Windows 程序
|
||||
|
||||
WSL 里不能使用 Linux 版 Qt/OpenCV 直接生成 Windows exe,必须准备 Windows 目标库。推荐使用 MinGW-w64 作为交叉编译器,并准备同为 MinGW-w64 目标的 Qt 和 OpenCV。
|
||||
|
||||
需要的组件:
|
||||
|
||||
- `x86_64-w64-mingw32-g++`
|
||||
- Windows/MinGW 目标 Qt,目录中应包含 `Qt6Config.cmake` 或 `Qt5Config.cmake`
|
||||
- Windows/MinGW 目标 OpenCV,目录中应包含 `OpenCVConfig.cmake`
|
||||
|
||||
构建脚本:
|
||||
|
||||
```bash
|
||||
export QT_MINGW_PREFIX=/opt/mxe/usr/x86_64-w64-mingw32.shared/qt6
|
||||
export OpenCV_DIR=/opt/mxe/usr/x86_64-w64-mingw32.shared/lib/cmake/opencv4
|
||||
./build_wsl_windows.sh
|
||||
```
|
||||
|
||||
如果使用的是自己编译或复制来的 Windows 目标 Qt/OpenCV,把上面两个路径换成实际路径即可。
|
||||
|
||||
## 说明
|
||||
|
||||
本示例中的分类属于简单规则分类,适合作为课程作业演示:根据图像整体亮度判断“偏亮/偏暗/亮度适中”,根据 BGR 平均值判断主色。若需要更高精度分类,可替换为训练好的 OpenCV DNN 或传统机器学习模型。
|
||||
|
||||
Reference in New Issue
Block a user