文章目录
- 前期准备工作
- 一、发布方式
- (一)手动发布
- (二)windeployqt发布
- 二、打包成.exe安装包
注意:后面的所有语句中涉及到编译器的,请大家自行替换成自己用的编译器,我这里使用的是MinGw的
前期准备工作
1.首先肯定要准备好你的Qt项目
2.以Release方式构建运行
以release的方式进行构建运行,这样生成的.exe文件(项目发布需要)大小会小很多,而Debug方式下产生的.exe文件带有许多调试信息,文件比较大
3.构建运行后,就可以在你的构建目录看到构建后的一些文件了
提示:如果编译之后找不到Releases文件夹在哪,可以按图操作查看编译的文件夹在哪
一、发布方式
分享 Qt 程序(项目)的方式无非两种,要么直接分享程序的源代码,要么分享程序生成的可执行文件。 和直接分享源码相比,大多数人会选择后者。但遗憾地是,Qt Creator 默认以动态链接的方式生成可执行文件,该文件无法独立运行,必须为其提供所需的动态链接库。也就是说,只分享 Qt Creator 生成的可执行文件是不行的,必须将运行所需的动态链接库一起分享,可执行文件才能在他人的电脑上正常运行。 对 Qt 程序进行打包,指的就是找到可执行文件运行需要的所有动态库文件,并将它们统一存放到指定的空文件夹里。 通过以下两种发布方式操作完成过后就可以通过压缩软件打包成压缩包发给你朋友使用。让朋友解压过后点击你的.exe文件就可以运行了
(一)手动发布
提示:此方式仅可用于有Qt环境的电脑上运行,发给朋友时需要要他的电脑上装有Qt
1. 桌面单独新建一个文件夹,将需要的打包发布的文件放在一起,方便后续操作
2. 需要的文件:
(1)release文件夹下的exe文件
(2)你自己所用到的所有数据文件
(3)mingw的bin目录下的:Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll、libgcc_s_seh-1.dll、libstdc+±6.dll、libwinpthread-1.dll
(再次提醒:如果你是MSVC编译器编译运行的,请在MSVC的bin目录下查找这些所需文件,下面的platforms文件夹也要从MSVC的目录下复制过来。但是经过我的操作,libgcc_s_seh-1.dll、libstdc+±6.dll、libwinpthread-1.dll这三个文件并没有在MSVC的bin目录中找到,但却报错缺少这三个文件,所以这三个还是照样把mingw的bin目录下的拷过来,问题就解决了)
总之,直接点击运行你的.exe文件,运行失败,提示缺少什么文件你就从bin目录下一个一个对应的找到并复制过来
3.有的人将所提示缺少的依赖库文件都添加过来后却报错This application failed to start because no Qt platform plugin could be initialized.
解决办法有几种:
(1)将自己对应编译器目录下plugin文件夹中的platforms文件夹直接复制到项目.exe的所在目录下就可以了,这是最简单的,一般就这样操作即可
(2)第二种在用户变量中添加如下内容: 变量名:QT_QPA_PLATFORM_PLUGIN_PATH 变量值:%QTDIR%\plugins\platforms\
(3)直接添加系统path变量E:\Qt\5.15.2\mingw81_64\bin,你自己对应编译器的bin目录
(用户变量只对当前用户有效,系统变量对所有用户有效。添加了环境变量后就不用自己在去加依赖库了,它会自己去设置的变量路径找,对此可以看看环境变量的解释:作者:wdf过河的小卒子) 至此,就可以将文件夹压缩发送给你朋友了,记住对方要安装有Qt哦,再附上我自己的操作最终文件夹图
(二)windeployqt发布
提示:此方法可在没有安装Qt环境的电脑上运行,不需要对方安装有Qt
1.windeployqt工具:
windeployqt 是 Qt 提供的 Windows 平台打包工具,它能自己找到 .exe 可执行文件需要的所有动态链接库,并将它们拷贝到当前文件夹中。
2.照样是桌面单独新建一个文件夹,方便后续操作:
这里我们只放入.exe文件和你自己的一些数据文件,其它所需要的依赖库文件让windeploy来帮我们添加
3.具体操作:
(1)win+R输入cmd打开命令窗口,通过cd命令进入到我们要操作的文件夹(.exe所在文件夹),cd /d C:\Users\BaiYang\Desktop\asd,或者直接在文件窗口地址栏输入cmd回车
(2)执行 “windeployqt ExamSys.exe” 命令,换成自己的.exe名字
解决办法:添加系统path变量E:\Qt\5.15.2\mingw81_64\bin,你自己对应编译器的bin目录,然后重新打开命令窗口,重新执行cd和windeployqt命令
(3)到这一步直接双击 .exe文件,如果它可以成功执行,表明打包操作是成功的。我们可以直接将文件夹压缩分享给他人,只要是 Windows 平台,都可以直接点击运行 .exe 文件。
(4)注意事项
①windeployqt可能从别处找了个一样名字的过来,并不是bin目录下的,版本号就是不对的。把它和bin目录下同名的比较大小,大小不对一般就是拿错了,自己从bin目录里面复制过来就行
②打包发给别人后却报错,我们在自己电脑上点击却能正常运行:
解决办法:我们自己能运行是因为之前在执行windeploy命令时将bin目录添加进了环境变量,缺少的文件它会自己去找,但是对方的电脑就不一定了,所以我们还需要手动加上所提示的缺少文件,一般就是少了libgcc_s_seh-1.dll、libstdc+±6.dll、libwinpthread-1.dll这三个文件
至此,也可以将文件夹压缩发送给你朋友了。操作很简单,但是有很多小细节需要注意,所以讲的篇幅也较其它文章多。感谢您的耐心
二、打包成.exe安装包
其实完成发布操作,就可以将整个文件夹发布出去了,但如果想打包成一个 exe 安装包,还需要一点操作。Windows环境将应用程序打包成一个exe应用,就像我们平常下载软件一样,以便给没有Qt环境的用户使用。 Windows 安装程序制作软件有许多,我这里使用的是NSIS + NisEdit来制作,使用NIS Edit打包程序,但是语言包必须Nsis支持实现; 背景还是windeployqt过后的那个文件夹,记住,没有libgcc_s_seh-1.dll libstdc+±6.dll libwinpthread-1.dll记得加上,有些人把bin添加进了环境变量,它会自己去找这三个文件,所以不会报错,但别人电脑就不会了
1.在发布的文件夹中添加程序安装图标、卸载图标及 License.txt 自述文件.如下图
注意:直接将 xxx.jpg 或 xxx.png 后缀改为 xxx.ico 是不能将图片转为图标的。
在线转 icon 网址:https://app.xunjiepdf.com/img2icon/
注意生成图标时候像素选择大点,如 256*256。License.txt 文件内容可自行定义
2.安装NSIS和脚本编辑器NisEdit
可以评论区或私信我发给你们,我不是那种还需要积分,付费才能下载的对吧,新人哪来的积分,我们主打的就是一个学习
3.运行脚本编辑器(NisEdit):详细打包步骤可以看作者:急支糖浆123
文件 --> 新建脚本:向导
若安装程序语言里面一片空白,没有语言选项时(NSIS 已安装),设置下编译器及帮助路径,
设置方法:
回到刚刚步骤,接着往下操作
这里不含文件夹,因为文件夹里面的东西并不是所有都需要,待会筛选几个文件出来单独添加就好了,全加进去也是可以的。
安装后桌面图标如下图,大家可自行卸载
文章止于风景,青春绽放于现在