目录
Qt的应用程序发布有两种方式:静态链接和共享库方式。
静态链接(Static linking)
指用Qt编译应用程序时,将Qt的运行库等所需的支持文件全部静态编译到应用程序里,生成一个独立的可执行文件,应用程序发布只需很少的几个文件。这种方式的缺点是应用程序可执行文件很大,缺少灵活性。例如,当应用程序需要更新,或Qt有更新时,需要重新编译应用程序后再发布。而且,静态链接方式不能部署插件。
共享库(Shared Libraries)
指按正常方式编译生成应用程序,将应用程序运行所需的各种共享库与应用程序一同发布给用户。这样,当Qt的运行库更新时可以单独更新Qt运行库,应用程序如果使用了插件(插件是以共享库形式存在的),也可以单独更新插件,这为应用程序更新提供了方便。
Windows平台上的应用程序发布
1、Windows发布工具
windeployqt.exe是 Qt自带的Windows平台发布工具,它可以自动为一个应用程序复制其运行所需的各种库文件、插件和翻译文件,生成可发布的目录。
windeployqt.exe文件在Qt的 bin目录下,Qt的每一个编译器版本均有独立的目录,如计算机上的Qt安装有minGW32、MSVC2015 32bit和 MSVC2015 62bit 3个编译器版本,Qt安装在
E:\QT\5.9.8\mingw53_32\bin E:\QT\5.9.8\msvc2015\bin E:\QT\5.9.8\msvc2015_64\bin
在Windows的cmd窗口使用windeployqt程序,语法如下:
windeployqt [options] [files]
options是一些选项设置,可以查看Qt帮助文件查看具体设置,一般使用缺省设置即可
files是需要生成发布文件的应用程序文件名。
在cmd窗口下使用 windeployqt,最好的方法是将windeployqt版本所在的bin路径添加在系统环境变量PATH中。
在 Windows平台上,windeployqt会将编译器的运行时文件复制到发布目录下,如果是用MSVC编译的,就包含Visual C++的运行库。
2、MinGW编译的应用程序发布
用MinGW编译器在release模式下编译,生成可执行文件.exe。将执行文件复制到一个目录下,例如“F:\setUp\minGW”
将MinGW版本的Qt的 bin路径添加到系统的PATH环境变量里,然后在Windows的“开始”菜单的文本框里键入“cmd”,回车后进入Command窗口,在Command窗口里依次键入并执行以下指令:
cd F:\setUp\minGW
windeployqt demo.exe //可执行的文件名
执行完后,windeployqt 将 demo.exe运行时需要的各种库文件都复制到 F:\setUp\minGW 目录下。
测试生成的发布目录下的文件是否齐全。将系统环境变量的bin路径去除。然后执行可执行文件.exe。如果提示丢失:“XXXXX.dll”,如果在E:\QT\5.9.8\mingw53_32\bin 有这个库文件,可复制文件到F:\setUp\minGW目录下。再次执行.exe文件,确保可执行的文件依赖的库完整。
注意:
运行应用程序,测试部署文件完整性时,必须删除系统环境变量里Qt的bin路径,否则系统从Qt的bin路径里是可以找到依赖的库文件,就达不到测试的目的。
查看可执行文件的依赖文件,可以使用工具:Dependency Walker,能够可视化的查看依赖的文件
3、MSVC编译的应用程序发布
步骤和2、基本一样。
4、安装
Qt5可以使用官方的Qt Installer Framework
官方下载:http://download.qt.io/official_releases/qt-installer-framework/
创建安装包程序
官方文档:http://doc.qt.io/qtinstallerframework/ifw-tutorial.html