63

我想迁移我的 Qt 4 应用程序以改用 Qt 5。由于MXE构建 Qt 5 的方式存在一些差异,这些指令失败了,包括它使用模块化 Qt tarball,而不是一个大的 tarball。

4

4 回答 4

108

以下是完整说明:

  • 得到它:

    git clone https://github.com/mxe/mxe.git
    
  • 安装构建依赖项

  • 为 Windows 构建 Qt 5:

    cd mxe && make qtbase
    

    这将首先构建其依赖项和交叉构建工具;在具有良好互联网访问权限的快速机器上应该花费不到一个小时。

    由于 Qt 5 新的模块化特性,各种主要的 Qt 组件现在位于不同的 tarball 中。上面选择的那个qtbase,应该为您提供足够的功能来运行普通的 GUI 应用程序,这是我自己的(小型)应用程序所需要的。

    如果您想构建所有 Qt 5,则需要运行make qt5(而不是make qtbase)。请注意,这将需要更长的时间才能完成,因此请确保您需要额外的功能。

  • 进入您的应用程序目录,然后运行 ​​Qt Makefile 生成器工具:

    <mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
    
  • 构建您的项目:

    make
    
  • 您应该在 ./release 目录中找到二进制文件:

    wine release/foo.exe
    

一些注意事项:

  • 这是在我的 64 位 Debian 8 上测试过的,当然也在 Windows 上。

  • 输出是一个 32 位静态可执行文件,在 64 位 Windows 上运行良好。

  • 如果您想要 64 位可执行文件,请使用以下命令构建 Qt:

    make MXE_TARGETS=x86_64-w64-mingw32.static qtbase
    

    默认MXE_TARGETS值为i686-w64-mingw32.static

于 2013-01-05T09:50:54.690 回答
8

git checkout 命令不正确。您现在必须获得他们的稳定分支,否则它将无法构建。

git clone https://github.com/mxe/mxe.git

应该...

git clone -b stable https://github.com/mxe/mxe.git

仅此一项就解决了我构建 qtbase 的所有问题,但完成后没有留下 qt 文件夹。然后 qt5 目标将失败并出现晦涩的错误。删除文件夹,检查稳定,它工作完美。

于 2014-09-03T20:17:32.900 回答
1

对于那些直接想要 GCC10 64 位编译的 Qt5(例如文件系统库)的人,以下是完整说明:

得到它:

git clone https://github.com/mxe/mxe.git

安装构建依赖项

为 Windows 构建 Qt 5 并激活 gcc10 64bits 插件:

cd mxe && make MXE_TARGETS=x86_64-w64-mingw32.shared MXE_PLUGIN_DIRS=plugins/gcc10 qt5

经过 2-3 小时的构建后,您可以构建您的应用程序(在您的 .pro 目录中):

<mxe root>/usr/x86_64-w64-mingw32.shared/qt5/bin/qmake

编译器的导出路径并构建您的项目:

export PATH=<mxe root>/usr/bin:$PATH
make

您应该在 ./release 目录中找到二进制文件并使用 wine (或 wine64) 启动它:

wine foo.exe

我真的不知道为什么,但我需要将 MXE 编译器目录添加到 wine 路径,因为它找不到 DLL:

WINEPATH="<mxe root>/usr/x86_64-w64-mingw32.shared/bin/" wine64 foo.exe 
于 2020-08-10T17:24:05.550 回答
0

如果您尝试这样做,对我来说工作正常!

su
mv mxe /opt/mxe
cd /opt/mxe && make
于 2019-02-14T18:48:58.017 回答