另一种在Linux上交叉编译Windows软件的方法是Archlinux上的mingw-w64工具链 . 它易于使用和维护,并提供最新版本的编译器和许多库 . 我个人觉得它比MXE更容易,它似乎更快地采用了更新版本的库 .
首先,您需要一个基于arch的机器(虚拟机或docker容器就足够了) . 它不一定是Arch Linux,衍生品也可以 . 我用过Manjaro Linux . 大多数mingw-w64软件包在官方Arch存储库中不可用,但有plenty in AUR . Arch(pacman)的默认包管理器不支持直接从AUR安装,因此您需要安装和使用像pacaur或yaourt这样的AUR包装器 . 然后安装mingw-w64版本的Qt5和Boost库就像这样简单:
pacaur -Sy mingw-w64-qt5-base mingw-w64-boost
#yaourt -Sy mingw-w64-qt5-base mingw-w64-qt5-boost #if you use yaourt
这也将安装mingw-w64工具链( mingw-w64-gcc )和其他依赖项 . 交叉编译Windows(x64)的Qt项目就像这样简单:
x86_64-w64-mingw32-qmake-qt5
make
要部署您的程序,您需要从 /usr/x86_64-w64-mingw32/bin/ 复制相应的dll .
要获得32位版本,您只需使用 i686-w64-mingw32-qmake-qt5 代替 . 使用 x86_64-w64-mingw32-cmake 可以轻松实现基于Cmake的项目 . 这种方法对我来说非常好,最容易设置,维护和扩展 . 它也适用于持续集成服务 . 也有docker images可用 .
例如,假设我想构建QNapi字幕下载器GUI . 我可以分两步完成:
1)启动docker容器:
sudo docker run -it burningdaylight/docker-mingw-qt5 /bin/bash
2)克隆并编译QNapi
git clone --recursive 'https://github.com/QNapi/qnapi.git'
cd qnapi/
x86_64-w64-mingw32-qmake-qt5
make
而已!在许多情况下,它会很容易 . 将自己的库添加到包存储库(AUR)也很简单 . 你需要write a PKBUILD file,这是最直观的,例如,见mingw-w64-rapidjson .