This repository uses one CI workflow to build native Windows ARM64 qBittorrent binaries with MSVC cross tools on GitHub Actions.
Workflow file:
- .github/workflows/ci_windows_arm64_native.yaml
The pipeline is now single-track and libtorrent version 2+ only:
- default branch: main
- one active workflow
- one libtorrent 2.x target
The workflow targets libtorrent 2.x only; libtorrent 1.2 (lt12) is retired from CI builds.
The workflow runs on:
- push to main
- push of tags matching v*-arm64
- manual workflow_dispatch
This gives:
- branch releases from main
- tagged releases from ARM64 version tags
Versions and build identity are defined in top-level env variables:
- qbt_version
- qt_version
- vcpkg_triplet
- libtorrent_ref
- libtorrent_version
- boost_version
- artifact_name
This keeps future version bumps in one place.
The workflow uses:
- ilammy/msvc-dev-cmd for ARM64 cross compilation
- lukka/run-vcpkg pinned to a fixed vcpkg baseline commit
- Ninja for CMake builds
Dependency triplet is fixed to:
- arm64-windows-static-release
- Setup MSVC ARM64 cross toolchain and build tools.
- Setup and normalize vcpkg paths.
- Install dependency packages (OpenSSL and zlib for the triplet).
- Build source URLs for Boost and qBittorrent tarball.
- Download/unpack Boost.
- Install Qt host tools and build Qt target libs for ARM64.
- Build libtorrent (ref from env) for ARM64.
- Build qBittorrent.
- Package artifact zip.
- Upload artifact.
- Run ARM64 smoke validation (PE signature and machine type check).
- Publish release assets for tag/main rules.
Two key safeguards are intentionally present:
-
libtorrent configure uses -DCMAKE_DISABLE_FIND_PACKAGE_OpenSSL=TRUE to avoid duplicate OpenSSL symbol paths in the final static link setup.
-
qBittorrent CommonConfig is patched during CI from QT_DISABLE_DEPRECATED_UP_TO=0x060500 to 0x040800 to match Windows static linking compatibility expectations and avoid Qt removed_api duplicate symbol linker failures.
Packaged zip contents:
- qbittorrent.exe
- qt.conf
Artifact zip filename:
- qbittorrent_<qbt_version>_arm64.zip
PDB/symbol artifacts are not packaged or published.
Tagged release path:
- tag format: v<qbt_version>-arm64
- release tag_name: v<qbt_version>-arm64
- release title: qBittorrent <qbt_version>-arm64
- asset: artifacts/<artifact_name>/qbittorrent_<qbt_version>_arm64.zip
Main-branch release path:
- tag_name: v<qbt_version>-arm64
- release title: qBittorrent <qbt_version>-arm64
- asset: artifacts/<artifact_name>/qbittorrent_<qbt_version>_arm64.zip
Both release bodies include current qBittorrent/Qt/vcpkg/libtorrent/Boost versions from env.