今天在发布程序的时候出了一点小问题,由于安装了几个不同版本的Qt,在发布32位的桌面程序时,使用了64位的Qt支持库,因此总结一下发布程序的流程中的一些知识点:
1.debug与release的区别(待补充)
2.Qt程序的发布流程
3.程序打包(待补充)
Qt程序的发布流程
i.发布方式
-静态发布:将依赖的库、资源等引入可执行程序,会生成一个比较大的可执行程序
流程参考:
-动态发布:依赖的库以动态链接库(.dll)形式出现在可执行程序的安装目录下,资源以各自的文件形式出现(主要指图片,包含可执行程序的icon、任务栏图标等),同时可以避免使用非商业版本的Qt发布程序时的授权问题(在官网下载Qt环境时会看到官方的授权条件)。
在之前打包Qt开发的程序时,习惯使用手动拷贝Qt依赖库(包括不同平台上的插件,例如windows上的qwindows.dll),VS开发的程序的运行环境msvcpxxx.dll,msvcrxxx.dll等,还有.manifest文件(标明依赖组件,VS2010之后应该是不再生成了)到可执行程序的安装目录下,这样做的问题是过程繁琐,容易遗漏。
Qt提供了一个工具 windeployqt.exe,可以帮助我们查找依赖的库并自动拷贝到可执行程序所在的目录。
ii.发布流程
1)Qt Widgets Application 可执行程序发布
首先,编译release版可执行程序,并将可执行程序移动至一个新建的空目录下。(注意:如果存在多个不同版本的Qt,需要注意所使用的编译器(MW、MSVC)以及32位/64位(不共享同一套依赖库)), 对应不同的Qt版本可以添加不同的变量,在执行命令前选择对应的版本的环境变量添加至path,如果选择错了版本会出现如下错误:
然后,运行命令行进入该目录,执行:windeployqt xxxxx.exe
最后检查目录中已经有了所有依赖的Qt库
再添加需要的VS运行库以及资源等。
2)Qt Quick Application发布(目前没有使用QML,待补充)