更新于2019年3月11日:从Qt 5.12开始,Qt项目正式支持64位模式下的MinGW-w64。您可以从Qt安装程序中安装它,或者从Qt的源代码构建自己的版本(他们已解决了导致构建失败的问题)。
之前的更新:我认为rubenvb的答案现在是这个问题的最佳答案:MSYS2包含了使用MinGW-w64构建的最新版Qt,这也是您构建64位Qt应用程序所需的内容。我推荐使用rubenvb答案中的Qt wiki链接进行部署;它已经得到了极大的改善。
Qt64-NG
我建议您通过Qt64-NG项目安装Qt构建版本。
该项目提供了一个带有MinGW-w64的最新的x64 Qt构建版本。在安装程序版本中还包括了MinGW-w64项目的GCC编译器(但不在7z中)。您需要选择与用于构建Qt的GCC相同版本的MinGW-w64以构建自己的应用程序,因此我建议选择安装程序。
您将需要选择所需异常堆栈帧展开方法的构建版本。问题“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目录添加到用户或系统路径变量中的环境变量中,这将允许您使用MinGW-w64的GCC从首选的构建过程进行构建。 Qt Creator会在此操作后自动检测已安装的编译器。
如果您不想添加到路径中,您可以手动为刚刚设置的版本指定编译器,然后通过Qt Creator使用它。您可能需要在“选项 > 构建 & 运行”下选择qmake.exe来添加Qt版本。您还需要在“构建 & 运行 > 调试器”选项卡下选择gdb.exe作为调试器。它位于Qt/qt-ver/qt-ver/mingw64/bin中。
您可以将MinGW-w64工具链与其他工具链进行交换。在Qt Creator中,您可以创建并在各个工具包之间进行切换。
部署
您可以使用Qt64-NG构建版本进行开发和部署。为了部署应用程序,您需要将应用程序运行所需的文件打包到应用程序中,这样您的最终用户就不需要进行任何额外的安装步骤。
首先,创建一个部署文件夹(通常使用应用程序名称)并将应用程序 exe 文件复制到其中。如果您使用的是 Qt Creator,则可以在侧边栏上的“项目”选项卡中找到应用程序 exe 的路径,或者在应用程序的 .pro 文件中指定。
有两种方法可以复制您需要运行应用程序的 dll 依赖项。您可以手动复制所需的文件,也可以使用 windeployqt,这是 Qt 安装提供的程序,它将自动复制(大多数)所需的依赖项以部署到刚刚创建的应用程序部署文件夹。
手动复制文件
从您的 Qt/qt-ver/qt-ver/bin 和 Qt/qt-ver/mingw64/bin 文件夹中将以下 dll 文件复制到应用程序部署文件夹中。某些 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会默认在应用程序部署文件夹/plugins中查找插件。你可以在Qt/qt-ver/qt-ver/plugins中找到要复制的插件文件夹。例外情况是平台文件夹,Qt将尝试在应用程序部署目录/platforms中找到它。以下目录结构指示了最小项目的文件复制位置。将任何其他所需的插件以及包含文件夹复制到部署/plugins文件夹中。
/deploy
/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文件夹添加到您的用户或系统Path变量中。
要使用windeployqt,请打开命令窗口并切换到应用程序部署目录。有关运行它的语法,请参见Qt Deployment。您可能希望按以下方式运行它:
windeployqt.exe app.exe
Windeployqt (Qt 5.4.1) 将会把你的 imageformats 和 iconengines 插件文件夹复制到你的应用程序部署目录层而不是插件文件夹内部。这是正确的位置,因为它改变了 Qt 寻找这些文件夹的位置。
故障排除
你可以在没有安装 Qt 开发库并在路径中的计算机上运行你的应用程序,以测试你是否拥有正确的文件。如果你在应用程序启动时没有收到错误提示,那么你就知道 Qt 找到了它所需要的依赖项,然后你可以打包你的应用程序以供发布。
如果你遇到错误,请参考 Tripleboot 部署指南。您还可以尝试使用 Process Explorer 查看应用程序在出现缺少依赖项错误时尝试加载的依赖项。
打包
经常情况下,应用程序将会通过压缩文件和/或安装程序进行分发。 Qt Installer Framework 提供了一种方便的方式,将你的 Qt 应用程序打包成一个可执行的安装程序以供发布。