在Linux上为Windows构建Qt 5

时间:2013-01-05 09:50:55

标签: qt qt5 mxe

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

4 个答案:

答案 0 :(得分:89)

以下是完整的说明:

  • 获取它:

    git clone https://github.com/mxe/mxe.git
    
  • 安装build dependencies

  • 为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

答案 1 :(得分:7)

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

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

应该是......

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

仅此一项就修复了qtbase构建的所有问题,但完成时没有留下任何qt文件夹。然后qt5目标将失败并出现模糊错误。删除文件夹,检查稳定,它完美无缺。

答案 2 :(得分:0)

如果您尝试这样做,对我来说很好!

su
mv mxe /opt/mxe
cd /opt/mxe && make

答案 3 :(得分:0)

对于直接需要GCC10 64位已编译Qt5的用户(例如,对于文件系统lib), 这是完整的说明:

获取:

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

安装build dependencies

在激活了gcc10 64位插件的情况下为Windows构建Qt 5:

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