Qt应用程序的发布有两种方式:

静态链接发布

  • 是指Qt编译应用程序时,将Qt的运行库等所需的支持文件全部静态编译到应用程序里,生成一个独立的可执行文件,应用程序发布只需很少的几个文件
  • 缺点:应用程序可执行文件很大,缺少灵活性。例如:当应用程序需要更新,或Qt有更新时,需要重新编译应用程序后发再发布。而且,静态链接方式不能部署插件

共享库方式发布

  • 是指按正常方式编译生成应用程序,将应用程序运行所需的各种共享库与应用程序一同发布给用户。这样,当Qt的运行库更新时可以单独更新Qt运行库,应用程序如果使用了插件(插件是以共享库形式存在的),也可以单独更新插件,这为应用程序更新提供了方便
  • 静态链接发布应用程序,还需要将Qt以静态方式重新编译生成静态版本的Qt,然后用静态版本的Qt编译和链接应用程序,才可以生成静态链接的应用程序,这个过程很费事,所以,一般应用程序发布都采用共享库的方式
二、演示案例

①Windows发布工具

  • windeployqt.exe是Qt自带的Windows平台发布工具,它可以自动为一个应用程序复制其运行所需的各种库文件、插件和翻译文件
  • 在Windows平台下,windeployqt会将编译器的运行时文件复制到发布目录下,如果是使用MSVC编译的,就包含visual C++运行库
  • 所在路径:windeployqt.exe在Qt的bin目录下,并且每个编译器版本均有一个独立的目录,所以若你的Qt中有多个编译器,就会有多个windeployqt.exe(备注:应用程序由哪个编译器生成,就要使用哪个windeployqt生成发布文件)

Qt:64---Qt应用程序的发布(windeployqt)_编译器

  • cmd命令行使用windeployqt:格式如下(options是一些选项,files是需要发布生成文件的应用程序文件名),要在cmd命令行使用windeployqt,最好的方式是将windeployqt版本所在的bin路径添加到系统的PATH环境变量里

Qt:64---Qt应用程序的发布(windeployqt)_其他_02

②MinGW编译的应用程序发布实例

  • 第一步:将想要发布的应用程序,使用MinGW编译器在release模式下编译,然后生成可执行文件

Qt:64---Qt应用程序的发布(windeployqt)_其他_03Qt:64---Qt应用程序的发布(windeployqt)_Qt应用程序的发布_04

  • 第二步:在任意地址新建一个目录,此处我们新建为“F:\Setup\minGW”,然后将TCPServer.exe复制到这个目录下

Qt:64---Qt应用程序的发布(windeployqt)_其他_05

  • 第三步:将MinGW编译器的bin路径添加到系统的PATH环境变量中

Qt:64---Qt应用程序的发布(windeployqt)_Qt应用程序的发布_06

  • 第四步:进入cmd命令行,输入以下执行
F:

cd Setup\minGW

windeployqt TCPServer.exe
  • 第五步:执行完成之后,windeployqt将TCPServer.exe运行时需要的各种库文件都复制到目录“F:\Setup\minGW”中了,如下图

Qt:64---Qt应用程序的发布(windeployqt)_可执行文件_07

点击这个.exe就可以直接运行了

Qt:64---Qt应用程序的发布(windeployqt)_编译器_08

  • 第六步:测试依赖库是否复制完全。将刚才添加到PATH中的环境变量删除,然后再去运行目录下的TCPServer.exe文件。如果运行时出错,提示丢失“xxx.dll”或丢失“xxx文件”,就说明windeployqt没有一次将所有的依赖文件复制完全,还需要自己手动导入一些文件,那么此时就在“D:\Qt\Qt5.9.5\5.9.5\mingw53_32\bin”目录下寻找缺少的“xxx.dll”或“xxx文件”,然后复制到“F:\Setup\minGW”目录下,点击.exe文件查看是否还能运行正常;如果没有缺失文件那么就不需要做这些事情

即使在开发应用程序的计算机上测试发布程序没有问题,也应该将发布文件目录复制到一个没有安装Qt的计算机上测试最好

Qt:64---Qt应用程序的发布(windeployqt)_应用程序_09

Dependency Walker软件:查看一个可执行文件的依赖文件,也可以使用这个软件,它能可视化地查看可执行文件的依赖项,可以从官网下载

③MSVC编译的应用程序发布实例

  • 第一步:将想要发布的应用程序,使用MSVC2015 64bit编译器在release模式下编译,然后生成可执行文件

Qt:64---Qt应用程序的发布(windeployqt)_编译器_10Qt:64---Qt应用程序的发布(windeployqt)_其他_11

  • 第二步:在任意地址新建一个目录,此处我们新建为“F:\Setup\msvc64”,然后将TCPServer.exe复制到这个目录下

Qt:64---Qt应用程序的发布(windeployqt)_应用程序_12

  • 第三步:将MSVC2015 64bit编译器的bin路径添加到系统的PATH环境变量中

Qt:64---Qt应用程序的发布(windeployqt)_可执行文件_13

  • 第四步:进入cmd命令行,输入以下执行
F:

cd Setup\msvc64

windeployqt TCPServer.exe
  • 第五步:执行完成之后,windeployqt将TCPServer.exe运行时需要的各种库文件都复制到目录“F:\Setup\msvc64”中了,如下图

Qt:64---Qt应用程序的发布(windeployqt)_其他_14

点击这个.exe就可以直接运行了

Qt:64---Qt应用程序的发布(windeployqt)_编译器_15

  • 第六步:测试依赖库是否复制完全。与MinGW测试方法相同,见上方

④安装程序制作

  • 复制应用程序所需的依赖文件,并测试没有问题后就可以制作安装文件了。有很多制作安装文件的软件,百度搜索制作即可