Qt项目发布打包教程(win10)

Qt打包项目步骤(win10)

一、Qt程序发布release

Qt软件软件运行有debug和release模式,debug模式包含调试信息,日常写项目、调试BUG都是在debug模式下,这对开发者而言很友好,但是随之而来的是占用较大的内存,具有较慢的运行的速度,不适合非开发人员使用。release模式下只进行项目本身要求功能的编译运行,不能调试,但使用内存小、运行速度快

发布release需要将构建配置选为release

Qt项目发布打包教程(win10)_第1张图片

构建运行测试无误后,找到程序文件下的release文件夹,拷贝.exe文件至另外的空文件夹,如在桌面新建文件,拷贝文件所在路径

Qt项目发布打包教程(win10)_第2张图片

二、使用Qt打包软件自动打包程序

软件运行需要众多的动态链接库和外部文件支持,由于Qt安装时Qt软件会自动配置好Qt自身所需要的库即dll文件,开发者们只需要配置项目需要的外部库文件,如sqlite3.dll、coin3d.dll等,都是需要开发者们自己去寻找配置的。对软件使用者而言,使用一个软件只需要安装完双击.exe文件就行,如果还需要另外安装Qt、VS等才能运行软件,那只能说这个项目开发极不成功。

正常项目开发完结束,需要把项目从代码文件打包成为可执行程序文件(.exe),而.exe文件运行需要外部库支持,为了不多装多余软件,需要把.exe运行所需要的库文件拷贝至发布文件夹内,Qt自带的打包软件会将.exe需要的Qt库文件全找到并拷贝至发布文件夹,但是无法找到非Qt的库文件,如数据库、opencv等库。Qt打包方法如下:

在开始软件菜单里找到Qt文件夹,运行文件夹的cmd程序Qt 5.2.0 for Desktop (MinGW 4.8 32 bit)

Qt项目发布打包教程(win10)_第3张图片

Qt项目发布打包教程(win10)_第4张图片

转换目录至步骤一所建发布文件夹,cd命令转换文件目录

Qt项目发布打包教程(win10)_第5张图片

然后输入windeployqt name.exe,name是可执行文件的名称

Qt项目发布打包教程(win10)_第6张图片

进行到这一步,项目所需要的Qt库文件都拷贝结束,接着把项目用到的外部文件拷贝至发布文件夹,如软件运行需要的数据库文件、图标文件和其他文件。

如果项目很小而且只用Qt没用其他的外部库,到这一步就已经结束了,这时可以双击发布文件夹内的.exe文件测试运行

三、添加外部库文件(dll)

规模比较大的项目常常使用很多的外部库来支持运行,项目打包需要拷贝这些外部库的dll文件,然而有时候项目到底用了外部库的哪个模块开发人员可能也不清楚,再加上找这些库文件也不容易,这时候需要用外部软件dependencies查询.exe需要的外部库文件

dependencies下载路径:mirrors / lucasg / dependencies · CODE CHINA (csdn.net)

下载方式:下载适合自己电脑的发行版本,由于我们发布的是release版本,所以下载该软件的release版本

Qt项目发布打包教程(win10)_第7张图片

Qt项目发布打包教程(win10)_第8张图片

无需安装,解压即可,运行文件夹里的DependenciesGUI.exe,在该软件内打开发布文件夹内的EXE文件,

Qt项目发布打包教程(win10)_第9张图片

打开后左侧边栏会显示EXE文件所需要的DLL文件,发布文件夹内没有的会标红,标红的文件需要自己去电脑上寻找,以图中的sqlite3.dll文件为例,该DLL文件是在我装MySQL的软件内,如果知道DLL是哪个外部库,就直接去该外部库路径下寻找吧

Qt项目发布打包教程(win10)_第10张图片
注意: 处理完标红的问题文件,程序肯定能脱离Qt而在你的电脑上独立的运行,但是如果要把这个程序给其他人使用,还有一些工作要做,在上图中显示的程序使用到的DLL文件有的在发布文件夹能找到,有的则是在在系统C盘里,还有一些是在我安装Qt的文件夹里,系统C盘的DLL可能别人电脑里也有,但是为了防止别人没有,最好是也把这些DLL找到,复制到发布文件夹内。而在安装Qt的文件夹里找到的DLL,别人的电脑上是肯定没有的,必须要复制到发布文件夹内

四、程序无法正常启动解决办法

如果发布文件夹内缺少所需的外部文件和库文件(dll),.exe文件就无法运行,会报错:(0xc000007b)

Qt项目发布打包教程(win10)_第11张图片

原因主要如下:

  • 外部资源文件未拷贝到位,缺乏必要的文件,如数据库文件、图片文件等
  • Qt打包软件运行错误,漏拷贝了部分Qt的dll文件,解决方法:重新使用Qt打包程序(步骤2)或者使用dependecies查找未拷贝的dll
  • 外部库文件(dll)不足,解决办法:按步骤三操作

你可能感兴趣的:(qt,软件开发)