feat: add simplified Qt image viewer Dev branch

This commit is contained in:
luochen570
2026-05-30 17:18:55 +08:00
parent 4832838a0d
commit 4627343e31
21 changed files with 591 additions and 1623 deletions

View File

@@ -1,108 +0,0 @@
name: Build Windows Release
on:
workflow_dispatch:
jobs:
build-windows:
# Gitea Actions 使用自建 act_runner不提供 GitHub 托管的 windows-latest。
# 这里匹配常见的 Windows Runner 标签Runner 需注册为 windows 或 windows-latest 才会接单。
runs-on:
- windows
defaults:
run:
shell: msys2 {0}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup MSYS2 build environment
uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
update: true
install: >-
git
zip
p7zip
mingw-w64-ucrt-x86_64-toolchain
mingw-w64-ucrt-x86_64-cmake
mingw-w64-ucrt-x86_64-ninja
mingw-w64-ucrt-x86_64-qt6-base
mingw-w64-ucrt-x86_64-opencv
- name: Configure
run: |
cmake -S . -B build-windows -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/ucrt64
- name: Build
run: |
cmake --build build-windows --parallel "$(nproc)"
- name: Package
run: |
set -euo pipefail
APP_NAME="chengnan"
PACKAGE_NAME="chengnan-windows-x86_64"
PACKAGE_DIR="dist-windows/${PACKAGE_NAME}"
EXE="build-windows/${APP_NAME}.exe"
test -f "$EXE"
rm -rf dist-windows
mkdir -p "$PACKAGE_DIR"
cp "$EXE" "$PACKAGE_DIR/"
# 部署 Qt 运行时和插件。
if command -v windeployqt >/dev/null 2>&1; then
windeployqt --release --no-translations "$PACKAGE_DIR/${APP_NAME}.exe"
elif command -v windeployqt6 >/dev/null 2>&1; then
windeployqt6 --release --no-translations "$PACKAGE_DIR/${APP_NAME}.exe"
else
echo "windeployqt not found" >&2
exit 1
fi
# 收集 MinGW/MSYS2/OpenCV 运行时 DLL。ldd 会列出 exe/dll 依赖;循环几轮收集二级依赖。
for round in 1 2 3; do
while IFS= read -r binary; do
while IFS= read -r dll; do
[ -f "$dll" ] || continue
cp -n "$dll" "$PACKAGE_DIR/" || true
done < <(ldd "$binary" \
| awk '/=> \/ucrt64\/bin\// {print $3} /^\/ucrt64\/bin\// {print $1}' \
| sort -u)
done < <(find "$PACKAGE_DIR" -maxdepth 2 -type f \( -name '*.exe' -o -name '*.dll' \) | sort)
done
cat > "$PACKAGE_DIR/README.txt" <<'EOF'
chengnan Windows x86_64 发布包
运行方式:
1. 解压整个目录。
2. 双击 chengnan.exe 运行。
说明:
- 本目录已包含 Qt、OpenCV 和 MinGW 运行时 DLL。
- 请不要只复制 chengnan.exe需保留同目录 DLL 和 Qt plugins 子目录。
EOF
(cd dist-windows && 7z a -tzip "${PACKAGE_NAME}.zip" "${PACKAGE_NAME}" >/dev/null)
(cd dist-windows && sha256sum "${PACKAGE_NAME}.zip" > "${PACKAGE_NAME}.zip.sha256")
- name: Verify package
run: |
test -s dist-windows/chengnan-windows-x86_64.zip
sha256sum -c dist-windows/chengnan-windows-x86_64.zip.sha256
7z l dist-windows/chengnan-windows-x86_64.zip | grep 'chengnan.exe'
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: chengnan-windows-x86_64
path: |
dist-windows/chengnan-windows-x86_64.zip
dist-windows/chengnan-windows-x86_64.zip.sha256
if-no-files-found: error