【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)

若需要添加自定义图标

软件发布后会使用默认应用程序图标(即软件出错时经常看到的那个图标)
若需要美观自定义图标,参考此文档

https://blog.csdn.net/gongfpp/article/details/120641056

qt IDE版

编译为release版本

Debug版本方便调试,而release版本则是为发布面向用户的软件的版本,release版本省略了大量的debug操作,编译器自动识别并在编译时自动优化程序,提高软件运行效率,因此我们需要用release版本编译
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第1张图片

使用qt添加依赖库

我们找到编译后的exe所在目录
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第2张图片
这里面包括了程序的.h .cpp和编译生成的.o等中间文件,我们运行时只需要exe文件
而此时双击exe文件,会发现缺少依赖dll等出错信息,这是因为我们使用qt creator的运行时,qt自动调用了所需的各种dll文件等,而我们自己手动打开exe,则没有qt的帮助。
为防止其他文件的干扰,我们新建一个文件夹,复制该exe文件进去,开始打包依赖库。
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第3张图片
按下windows徽标键 ,搜索你所用的编译器的版本 (我这里用的是minGw 64bit)打开
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第4张图片

窗口中输入cd D:\code\Qt\build-Homeworktor-Desktop_Qt_5_12_3_MinGW_64_bit-Release\release\Homeworktor
(路径换成你自己刚才新建的exe目录,若目录不处于C盘则需要先切换到相应盘符)
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第5张图片
此时如上图 输入windeployqt Homeworktor.exe (exe换成你自己的文件名)
打包完如下图【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第6张图片
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第7张图片
该目录则包括了所需的所有文件和依赖项 此时已经可以双击使用exe
注:若仍出现如找不到libgcc_s_dw2-1.dll, 尝试重新安装该程序以解决问题.等错误,可能是构建套件与编译时的编译器版本不符合,需要选择相同版本的编译器重新执行windeployqt,即下图两者相同
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第8张图片
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第9张图片

Visual Studio版

编译并生成exe

vs里点击在这里插入图片描述
则会生成exe

用tool程序添加依赖库

首先启动下图程序【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第10张图片
接下来需要两个目录
1.对应32|64位的windeployqt.exe程序目录,一般在类似下图的qt安装目录。
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第11张图片
2.欲编译的程序release版目录。一般在vs项目目录中的release目录中,找到exe文件【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第12张图片
如果没有,则先在vs中编译运行一次。

然后我们同样新建一个文件夹,把exe丢进去,这时我们可以看到,exe运行不了(因为没有依赖文件)。
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第13张图片

我们使用tool工具,cd进入新建的文件夹(这里文件夹名为exe),使用
…\目录\windeployqt.exe -release 目标exe名
如下图所示
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第14张图片
注意注意 :这地方–release 不是单横线 图中打错了 但能运行 不知道有没有问题
完成后目录中会添加进项目所需的各种文件,此时即可运行
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第15张图片

(选做)打包成一个exe文件

这时文件夹内有一堆文件,如果我们的项目并不大,仅是一个小工具,则一个大文件夹丢给用户使用则显得不方便,我们可以打包成一个exe文件。
首先下载 Enigma Virtual Box

https://enigmaprotector.com/en/downloads.html

安装后打开
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第16张图片
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第17张图片
此时在3处选择Add Folder Recursive 选择主exe所在的有一堆dll的目录(大部分情况下即1处的目录) 然后OK
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第18张图片
点OK,则如上图,此时可以Files Options 中压缩文件
【项目】[Qt] QT 发布程序;生成exe 、添加依赖dll 库、(可选)打包成单exe (含qt IDE和vs版)_第19张图片
勾选Compress Files 则压缩文件 ,使exe体积更小(不知道有没有性能损失)
然后Process 等待结束 run则立即打开生成的单exe close则关闭,此时已在2处所选目录生成新的单exe文件,移动它到其他地方 ,双击试试,已经可以单独运行了。

你可能感兴趣的:(学习笔记,实践项目,qt,windows,c++)