首先选择release模式,生成exe程序,然后新建一个空文件夹pkt,把生成的exe、用到的数据库文件、配置ini文件等拷进pkt文件夹
方法一:
打开->开始->QT->QT for desktop,这样会打开一个命令提示符窗口,输入:
windeployqt E:\pkt\meter.exe
回车即可。(exe文件的路径不用输入,直接把exe文件拖放进命令提示符窗口即可)
方法二:
一键打包,推荐
把上面的方法一的步骤进行自动操作就行了,先来看一下方法一的原理,依次打开:开始->QT->QT for desktop,可以发现QT for desktop是一个命令提示符的快捷方式,右击其属性,看到它定位到了一个批处理bat文件:C:\Windows\System32\cmd.exe /A /Q /K D:\Qt\Qt5.6.1\5.6\mingw49_32\bin\qtenv2.bat,这个路径每个人的电脑上可能是不同的,具体可以查看自己电脑上的情况。
打开这个bat文件,内容如下:
echo off
echo Setting up environment for Qt usage...
set PATH=D:\Qt\Qt5.6.1\5.6\mingw49_32\bin;d:/Qt/Qt5.6.1/Tools/mingw492_32\bin;%PATH%
cd /D D:\Qt\Qt5.6.1\5.6\mingw49_32
pause
可以看到它的功能是配置了一下环境变量,这个文件里面的内容每个人的电脑上也是不同的,跟你安装QT的位置有关。
下面我们新建一个bat文件,把上述代码考进去,然后在加入一些自己的代码:
echo off
echo Setting up environment for Qt usage...
set PATH=D:\Qt\Qt5.6.1\5.6\mingw49_32\bin;d:/Qt/Qt5.6.1/Tools/mingw492_32\bin;%PATH%
cd /D D:\Qt\Qt5.6.1\5.6\mingw49_32
%以上内容是copy过来的,下面的是自己添加的%
set bat_path=%~dp0
echo 当前bat文件的路径是:
echo %bat_path%
set exe_path=d:\ %保存exe文件的全路径%
set /a exe_cnt=0 %统计bat文件夹下exe文件的数量%
for /r %bat_path% %%i in (*.exe) do (
::@echo %%i %列出所有的exe文件%
set exe_path=%%i %记录exe文件路径%
set /a exe_cnt=exe_cnt+1
)
::echo %exe_cnt%
if %exe_cnt% NEQ 1 (
echo 错误提示:bat所在文件夹中只允许有且只有1个exe文件!!!
echo 程序中断...
) else (
echo 查到的exe文件全路径为:
echo %exe_path%
echo 开始收集dll..
windeployqt %exe_path%
echo 操作成功
)
echo 按下任意键退出本程序
pause
使用方法:
1、新建一个空文件夹,把release的exe文件,以及用到的数据库文件、ini文件、这个bat文件都复制到这个文件夹中
2、双击这个文件夹中的bat文件,等待bat运行完毕即打包成功。
简单说一下这个一键打包的原理,首先,配置QT环境变量,这一段是直接copy来的,然后检查bat所在的文件夹中exe文件的数量,如果数量!=1,就退出批处理,如果等于1,就提取这个exe文件的全路径,然后执行:windeployqt exe文件的路径。
PS:本例程用到的两个bat语法:
1、set:声明变量或者修改变量的值,\a参数代表声明的变量是数字,进行加减乘除操作,\p代表这个变量等待键盘输入的数据(仅在控制台有效,在批处理中无效),不带参数代表声明的变量为字符串。
调用set声明的变量,要在变量名前后加%。
2、for语句:for中的循环变量无需声明,直接用就行,如本例中的%%i,注意如果在控制台执行,就用%i,少一个%,
其余语句较为简单,不做记录了。