在Linux上交叉编译Windows软件的另一种方法是Archlinux上的mingw-w64工具链。它易于使用和维护,并且提供了最新版本的编译器和许多库。我个人觉得它比MXE容易,而且似乎更快地采用了新版本的库。
首先,您将需要一台基于Arch的机器(虚拟机或docker容器就足够了)。不必是Arch Linux,衍生产品也可以。我使用了Manjaro Linux。大多数mingw-w64软件包在官方的Arch存储库中不可用,但是AUR中有很多。Arch(pacman)的默认软件包管理器不支持直接从AUR安装,因此您将需要安装和使用yay或yaourt之类的AUR包装器。然后安装mingw-w64版本的Qt5和Boost库非常简单:
yay -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
要部署你的程序,你将需要复制相应的dll的/usr/x86_64-w64-mingw32/bin/。例如,您通常需要复制/usr/x86_64-w64-mingw32/lib/qt/plugins/platforms/qwindows.dll到 program.exe_dir/platforms/qwindows.dll。
要获得32位版本,您只需使用即可i686-w64-mingw32-qmake-qt5。基于Cmake的项目与一样容易工作x86_64-w64-mingw32-cmake。这种方法对我来说非常有效,是最容易设置,维护和扩展的。持续集成服务也很不错。也有docker镜像可用。
例如,假设我要构建QNapi字幕下载器GUI。我可以分两步来做:
启动Docker容器:
须藤码头运行-it burningdaylight / docker-mingw-qt5 / bin / bash
克隆并编译QNapi
git clone --recursive'https://github.com/QNapi/qnapi.git'cd qnapi / x86_64-w64-mingw32-qmake-qt5 make
而已!在许多情况下,这将很容易。将您自己的库添加到软件包存储库(AUR)也是很简单的。您将需要编写一个PKBUILD文件,它尽可能地直观,例如,参见mingw-w64-rapidjson。