gpt4 book ai didi

windows - 如何在Windows(使用Qt Creator)上构建64位MinGW Qt应用程序

转载 作者:可可西里 更新时间:2023-11-01 12:15:44 28 4
gpt4 key购买 nike

我正在寻找(并且肯定不是唯一的一种)在Windows上构建基于MinGW的64位Qt程序的最直接方法。直截了当意味着最小的精力和时间(例如,用于构建和设置)。目前,我运行带有MinGW/OpenGL和QtCreator的Windows 32位版qt-project.org网站的常规官方开发环境。当然,我已经阅读了qt-project.org的(未完成...)64位Wiki页面,并且阅读了不同的stackoverflow问题,但仍然感到困惑。我知道其他文章中已经讨论了如何构建64位Qt的主题,但这不是我的问题,我需要的是概述和最有利的64位MinGW端口。

例如,令我感到困惑的是,来自mingwbuilds sourceforge项目的“x64-Qt-5.2.1 + QTCreator-3.0.1-(gcc-4.8.2-seh).7z”程序包中的DLL似乎是32位的。

为了澄清我的问题,让我也提出一些相关的问题:

  • 我需要首先构建一个64位开发环境吗?
    64位可执行文件,还是可以保留我的默认默认环境,并且
    只用64位工具链交换MinGW工具链?
  • 在哪里可以
    我获得了用于部署的64位Qt库,还是需要构建
    他们自己呢?或者在哪里可以获得64位开发环境
    包括64位库?
  • 如果必须自己构建,那么哪个MinGW 64位端口是最合适的?

  • 非常感谢你的帮助。

    最佳答案

    更新3/11/2019:从Qt 5.12开始,Qt项目正式支持64位模式下的MinGW-w64。您可以从Qt安装程序安装它,也可以从Qt的源代码自己构建(他们已经解决了阻止成功构建的问题)。

    先前更新:我认为rubenvb's answer现在是此问题的最佳答案:MSYS2包含使用MinGW-w64构建的最新Qt,这是构建64位Qt应用程序所需要的。我建议在rubenvb的答案中使用Qt wiki链接进行部署。它大大改善了。

    Qt64-NG

    我建议从Qt64-NG project安装Qt版本。

    该项目使用MinGW-w64提供了最新的x64 Qt构建。 MinGW-w64项目的GCC编译器也包含在安装程序版本中(但不包括在7z中)。您将需要与用于构建自己的应用程序的Qt的MinGW-w64中的GCC版本相同,因此建议您选择安装程序。

    您将需要使用所需的异常堆栈框架展开方法来选择构建。问题What is difference between sjlj vs dwarf vs seh?描述了不同版本的Qt中存在的异常处理程序类型之间的差异。在GCC 4.8发布之前,SJLJ是唯一的选择,但后来的GCC版本支持SEH。尽管SEH效率更高,但这两种选择都可以。

    安装后

    安装Qt之后,您可以将Qt/qt-ver/qt-ver/bin和Qt/qt-ver/mingw64/bin目录添加到环境变量中的User或System Path变量中,这将允许您使用MinGW -w64的GCC,可从您喜欢的构建过程进行构建。完成此操作后,Qt Creator将自动将MinGW-w64检测为已安装的编译器。

    如果您不想添加到路径中,则可以手动为刚刚使用Qt Creator设置的版本指定编译器。您可能需要通过在“选项”>“构建和运行”下选择qmake.exe来添加Qt版本。您还需要在Build&Run> Debuggers选项卡下选择gdb.exe作为调试器。它将位于Qt/qt-ver/qt-ver/mingw64/bin。

    您可以将MinGW-w64工具链与其他工具链交换。要在Qt Creator中执行此操作,您可以在套件之间创建和交换。

    部署方式

    您可以使用Qt64-NG构建进行开发和部署。要进行部署,您将需要打包应用程序与应用程序一起运行所需的文件,因此最终用户将不必执行任何其他安装步骤。

    首先,创建一个部署文件夹(可能带有您的应用程序名称),然后将应用程序exe文件复制到其中。如果您使用的是Qt Creator,则可以在侧栏的“项目”选项卡中找到应用程序exe的路径,也可以在应用程序的.pro文件中找到该路径。

    您可以通过两种方式复制运行应用程序所需的dll依赖项。您可以手动复制所需的文件,也可以使用windeployqt(Qt安装随附的程序),该程序会自动将(大多数)所需的依赖项复制到部署中,并将其部署到刚创建的应用程序部署文件夹中。

    手动复制文件

    将以下dll文件从Qt/qt-ver/qt-ver/bin和Qt/qt-ver/mingw64/bin文件夹复制到应用程序部署文件夹。一些dll文件将位于两个文件夹中,并且可以使用以下两个位置:

    icudt54.dll
    icuin54.dll
    icuuc54.dll
    libgcc_s_sjlj.dll or libgcc_s_seh.dll (corresponds with chosen stack unwinding method)
    libssp-0.dll
    libstdc++-6.dll
    libwinpthread-1.dll
    Qt5Core.dll
    Qt5Gui.dll
    Qt5Widgets.dll

    您还需要包括与项目中使用的Qt模块相对应的所有Qt5 * .dll文件。

    接下来,您需要复制Qt所需的所有插件dll文件。 Qt默认会在应用程序部署文件夹/插件中查找插件。您可以在Qt/qt-ver/qt-ver/plugins中找到要复制的插件文件夹。它是平台文件夹的异常(exception),它将在您的应用程序部署目录/平台中尝试找到该文件夹​​。以下目录结构指示了在最小项目中将文件复制到的位置。将任何其他需要的插件(包括包含的文件夹)复制到您的Deployment/plugins文件夹中。

    /部署
    /platforms
    /plugins
    icudt54.dll
    icuin54.dll
    icuuc54.dll
    app.exe
    libgcc_s_seh-1.dll
    libssp-0.dll
    libstdc++-6.dll
    libwinpthread-1.dll
    Qt5Core.dll
    Qt5Gui.dll
    Qt5Widgets.dll

    /部署/平台
    qwindows.dll

    /deploy/plugins/imageformats
    qjpeg.dll

    Windeployqt

    您可以在Qt/qt-ver/qt-ver/bin文件夹中找到windeployqt.exe。 Windeployqt要求您的Qt/qt-ver/qt-ver/bin和mingw64/bin文件夹位于用户或系统路径变量中,才能正常工作。

    要使用windeployqt,请打开命令窗口,然后切换到应用程序部署目录。运行它的语法可以在 Qt Deployment中找到。您可能需要按以下方式运行它:
    windeployqt.exe app.exe

    Windeployqt(Qt 5.4.1)会将图像格式和iconengines插件文件夹复制到应用程序部署目录级别,而不是复制到插件文件夹内部。这是正确的位置,因为它更改了Qt查找这些文件夹的位置。

    故障排除

    您可以通过在未安装Qt开发库的计算机上以及路径中运行应用程序来测试是否具有正确的文件。如果您在应用程序启动时没有遇到任何错误,您将知道Qt找到了所需的依赖项,并且可以打包应用程序以进行分发。

    如果遇到错误,请引用 Tripleboot deployment guide。您还可以尝试使用 Process Explorer来查看应用程序在出现依赖项缺失错误时尝试加载哪些依赖项。

    包装

    经常使用存档和/或安装程序来分发应用程序。 Qt Installer Framework提供了一种方便的方法来打包Qt应用程序以作为安装程序可执行文件进行分发。

    关于windows - 如何在Windows(使用Qt Creator)上构建64位MinGW Qt应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402225/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com