写在前面:
我是研二学生,用qt给老师项目做的一个辅助软件。项目要验收,所以需要打包qt项目成exe文件,但是我死活弄不出来,来回搞了两三天才弄好。特此写下第一篇博客,记录这个过程,并给同样困扰的新手朋友们提供一个方法。我是一个新手,期待大家的批评指正。
打包流程:
1、获取初始exe文件
一般的博客是先将QT使用Release编译,在项目文件夹中新生成的bulid-xxx-Dektop-xxx-release地址下的release文件夹中得到exe文件。
但是我在release中得到的exe文件,在经过dll文件配置后死活都不能执行。所以我和其他的博客的区分就在这里。
我推荐大家在bulid-xxx-Dektop-xxx-Debug地址下的debug文件夹中得到exe文件。换句话说,不用将编译调成Release编译,直接去找已经运行过的项目中的bulid-xxx-Dektop-xxx-Debug地址下的debug文件中的exe文件。
将在debug文件夹下得到的exe文件单独存放在一个新建的文件夹中。
2、使用windeployqt 进行dll文件的配置(粗配置)
这一步有人推荐使用使用QT终端,或者win+r cmd,来调用windeployqt。这样也可以但是我觉得麻烦,推荐大家一种简单的使用windeployqt 的方法。
打开你电脑里qt的安装路径中的mingw文件夹(如果你用的是msvc或者其他的那就打开对应文件夹下的bin文件夹,对应好你使用的位数 64/32),我电脑里是这样的路径:D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin。在此文件夹中找到windeployqt.exe文件。
将你刚才新建文件下保存的项目输出exe文件拖动到这个windeploygt.exe上,就可以自动使用windeploygt对你的exe进行dll的配置了。
配置好后会变成这样。但是注意:windeploygt并不是一个很好用的配置dll文件的工具,如果你使用了第三方库,比如说opencv,那么windeploygt就不会给你配相应的dll文件。对于只使用qt库的项目可以略过步骤3(但是也可能出现QT的dll文件也没有配好的问题,windeploygt真的不好用,但是一般也就一两个qt的dll文件没配好,可以根据打开exe文件的错误提示手动添加dll文件)。
3、补充dll文件(精配置)
在图片中1的位置运行项目,在2的窗口处会输出一些包含dll库的信息。
我的建议是,对于一些功能不是很多的项目,把你的功能运行以下以后,在复制2窗口的信息,然后手动提取其中包含dll文件的信息(我的项目不是很麻烦,所以这一步也不难)。最后我得到项目需要的dll库的内容大致如下:
这是我手动删除系统dll文件的内容,如果不删掉也可以,因为下一步就是将这些信息发给GPT,让它给你写一个脚本,将这些非系统dll文件复制到你的在第一步新建的文件夹中。我的脚本内容大致如下,可以看到其实也就一个opencv的dll文件缺失,项目需要的非系统dll文件大部分都在windeploygt中配置好了。
(我问gpt的时候,它告诉我用一个专门给exe配置dll文件的软件,但是那玩意是真的不好用,是在配不好的可以找一找用一下)
至此已经将项目输出的exe所需的所有dll文件(系统dll文件不需要配置)配置完毕,用户下载好文件夹就可以点击文件夹中的exe使用该软件。但是毕竟这样一个文件夹不太好传输,所以各位可以考虑以下第五步的虚拟文件打包。
5、虚拟文件打包
推荐使用一个软件:Enigma Virtual Box
安装过程很简单,跟着步骤走就可以。安装完成后按下图的步骤导入第一步新建文件夹中的exe文件
然后导入配置好dll文件的文件夹。
然后点击process就可以打包了,打包
打包后会生成这样一个exe文件,这就是一个不需要任何外设文件点击就可以使用的可执行文件了。
标签:windeploygt,文件,exe,QT,项目,dll,文件夹 From: https://blog.csdn.net/Heinrich2/article/details/143082902