功能描述:讲解了 Windows 下打包发布 Qt 应用程序的三种方法,并对比优缺点
一、利用 windepolyqt 工具打包发布
Qt 提供了一个 windeployqt 工具来自动创建可部署的文件夹。
打包发布流程:
1. 新建一个文件夹,将编译后的可执行程序拷贝到该文件夹中,以 QSshDemo.exe 应用程序为例,新建一个 QSsh-exe 文件夹,将 release 文件夹下的 QSshDemo.exe 文件拷贝到 QSsh-exe 文件夹下;
2. 查看本应用程序是由哪个编译器编译,去 Qt 安装目录相应编译器名称目录下的 bin 文件夹下寻找 windeployqt.exe 文件,如:路径为 xxx/Qt5.10.0/5.10.0/mingw53_32/bin,将 windeployqt.exe 文件拷贝到应用程序的同级目录下。QSshDemo.exe 由 Qt 5.10.0 的 MinGW 编译器编译,所以到 xxx(Qt 安装目录根目录)/Qt5.10.0/5.10.0/mingw53_32/bin 目录下,将 windeployqt.exe 文件复制粘到 QSshDemo.exe 的同级目录下;
3. 在搜索框中输入 “cmd” 回车,或者在“开始”菜单打开“命令提示符”,通过 cd 指令切换到应用程序文件夹下,如切换到 QSsh-exe 文件夹下;
4. 执行 windeployqt 打包指令,格式为:windeployqt.exe +空格+应用程序名称.exe;
命令格式:windeployqt.exe 应用程序名称.exe
windeployqt.exe QSshDemo.exe
5. 如果应用程序仅依赖 Qt 自身动态库,则到此结束,双击应用程序即可运行;如果应用程序还依赖其它第三方库,则需要手动将第三方库拷贝到此文件夹下,注意:此处的第三方库必须和应用程序是同一种编译器编译。QSshDemo.exe 还依赖 QSsh 动态库,所以手动将这个动态库拷贝到QSsh-exe 文件夹下。
6. 到此,应用程序打包发布完成,为了减小应用程序发布文件夹的大小,建议删除 windeployqt.exe文件,双击 QSshDemo.exe 即可运行程序。
7. 此文件包含了应用程序所需的所有文件,将此文件夹提供给用户,用户可放到系统中任何位置,双击应用程序即可运行;也可通过选中该应用程序,右键菜单选择“发送到” -> “桌面快捷方式”,双击桌面快捷方式亦可运行。
优点:操作简单,一个指令搞定所有依赖文件
缺点:并不是所有文件都是该应用程序所必需的,发布打包文件会浪费一些存储空间
二、逐个拷贝应用程序依赖库
顾名思义,此方法是应用程序缺什么依赖库就拷贝对应的依赖库,直到程序能成功运行。
打包发布流程:
1. 新建一个文件夹,将编译后的可执行程序拷贝到该文件夹中,以 QSshDemo.exe 应用程序为例,新建一个 QSsh-exe 文件夹,将 release 文件夹下的 QSshDemo.exe 文件拷贝到 QSsh-exe 文件夹下;
2. 双击运行 QSshDemo.exe 应用程序,查看是否成功运行,如果不能成功运行,查看缺少什么依赖库;
3. 将缺少的依赖库依次复制粘贴到应用程序的同级目录下,以 QSshDemo.exe 应用程序为例,将 Qssh.dll 复制粘贴到 QSsh-exe 文件夹下;
4. 重复第 2 步和第 3 步的操作,直到应用程序成功运行。
5. 依次将 Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll、libgcc_s_dw2-1.dll、Qt5Network.dll、libstdc++-6.dll、libwinpthread-1.dll 拷贝到 QSsh-exe 文件夹下,QSshDemo.exe 即可成功运行。
优点:发布打包文件仅包含必需依赖库,体积较小
缺点:逐个拷贝依赖库,操作相对麻烦
三、静态发布
将 Qt 的所有库重新编译,全部编译为静态库,然后用静态编译的 Qt 库来链接应用程序,这样生成的应用程序就可以直接运行,而不需要 .dll 文件的支持。不过这样生成的 exe 文件会很大,而且静态编译缺乏灵活性,也不能部署插件。
因此,静态发布方式了解即可,不推荐使用!