QT打包程序,一键打包

首先选择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,少一个%,

其余语句较为简单,不做记录了。




你可能感兴趣的:(QT打包程序,一键打包)