WIN10关于QT Widgets Application项目打包的详细说明

环境

win10系统、MSVC2017(64bit)、Qt Widgets Application项目

工具

1.windeployqt:qt自带打包工具,通过命令行使用,用于搜集所需要的dll
2.360任务管理器:用于查找windeployqt不能自动搜集的dll,手动添加
3.enigma virtual box:用于将配置好dll以及各种资源的项目文件夹打包成exe
百度云盘链接 提取码:fwzn

流程

在Release模式下,构建,运行,生成release版本的build目录

首先用QtCreator打开自己的项目,选择Release方式(默认是Debug),再构建,再运行。(可能直接运行也行,个人习惯如此)
WIN10关于QT Widgets Application项目打包的详细说明
成功运行程序后,打开项目所在目录,发现产生了一个release模式的build目录。(值得一提的是,如果在代码中使用本地文件,相对路径相对的是build目录,而不是源代码所在目录。)
WIN10关于QT Widgets Application项目打包的详细说明

windeployqt打包

程序exe文件运行的时候,需要一大堆dll,如果环境中没有这些dll则不能运行。这也是造成本机打包的程序在其他计算机环境无法运行的主要原因。关于动态链接库(dll)的详细介绍,可以参考:动态链接库(DLL)
首先进入Release模式产生的build文件夹,进入release文件夹,找到[你的项目名称].exe,下面以我的项目VirusCrisis.exe为例。
WIN10关于QT Widgets Application项目打包的详细说明
复制此exe至一空文件夹,(个人习惯,不使用带有中文的目录,可能会造成bug),比如在桌面上创建一个文件夹,命名为temp。
WIN10关于QT Widgets Application项目打包的详细说明
打开cmd,进入此目录(可以先右击属性,复制目录,然后粘贴上去),使用windeployqt打包,如下图
WIN10关于QT Widgets Application项目打包的详细说明
运行结果如下图
WIN10关于QT Widgets Application项目打包的详细说明
值得注意的是,我这里使用的是MSVC编译工具,如果Visual Studio的环境变量没有配好,会出现这样的错误
WIN10关于QT Widgets Application项目打包的详细说明
解决方法:在环境变量中添加VCINSTALLDIR,它的值为安装目录,我使用的是VS2017,配置如下
WIN10关于QT Widgets Application项目打包的详细说明
环境变量配置好后,把cmd关了重新打开,执行上述打包操作,就欧克了!
打开temp问价夹,可以发现windeployqt自动添加了很多运行所必备的文件。
WIN10关于QT Widgets Application项目打包的详细说明

进一步检查并添加dll

windeployqt虽然功能强大,但是不能添加一些用到的第三方库dll,为了避免缺失dll,使用360任务管理器进行进一步添加。
360管理器在360安全卫士的“功能大全”里,下载即可。
WIN10关于QT Widgets Application项目打包的详细说明
打开temp文件夹里的exe,让它运行。
WIN10关于QT Widgets Application项目打包的详细说明
右击,查看加载模块。
WIN10关于QT Widgets Application项目打包的详细说明
可以发现这些dll大概有三类,第一种位于C:\WINDOWS的系统dll,如果目标计算机环境的系统dll不缺失,这些dll不必添加。第二种是位于C:\Users\Lenovo\Desktop\temp的dll,是windeployqt已经配置好的。第三种,是第三方库dll。比如对于我这个项目,有
WIN10关于QT Widgets Application项目打包的详细说明
WIN10关于QT Widgets Application项目打包的详细说明
右击,打开所在目录,复制到temp文件夹即可。

添加必要的图片、声音等资源

一个完整的项目,往往需要图片、声音等素材,(我个人习惯是使用qrc资源文件添加资源)。将源代码的pro配置文件、qrc以及所使用的资源复制到temp即可。
WIN10关于QT Widgets Application项目打包的详细说明

打包成一个exe

enigma virtual box工具可以将刚刚打包好的文件夹整合成一个完整的exe。
打开此工具,在主程序文件名称选择temp文件夹下的exe,输出路径会自动给出,可以自行修改路径以及输出的exe名称。
WIN10关于QT Widgets Application项目打包的详细说明
点击添加,添加文件夹递归(x)
WIN10关于QT Widgets Application项目打包的详细说明
选择temp文件夹,点击确定
WIN10关于QT Widgets Application项目打包的详细说明
点击确定
WIN10关于QT Widgets Application项目打包的详细说明
点击文件选项
WIN10关于QT Widgets Application项目打包的详细说明
勾选压缩文件,点击确定
WIN10关于QT Widgets Application项目打包的详细说明
点击打包
WIN10关于QT Widgets Application项目打包的详细说明
打包结束后,到输出路径找到输出的exe即可。

缺陷

  1. 没有对系统dll进行配置,如果目标计算机与本机的系统有差异可能移植失败
  2. 仅仅给出使用qrc资源文件的图片声音资源的配置,如果项目使用的是本地文件的绝对路径,在资源添加的时候需要格外注意
  3. 仅限于Qt Widgets Application,Qt Quik Application的打包方法不同于此