Qt 打包发布(自定义Cmd提取依赖)
Qt 打包发布(自定义Cmd提取依赖)
- 一、依赖库提取
- 1.1 常规 windeployqt
- 1.2 编写代码封装执行 bat
- 二、打包成单个文件
- 三、依赖提取工具下载
- 四、联系作者
阵营横跳,有始有终。VS依靠系统平台加成,开发,调试,发布浑然天成;Qt也正是因为没有加成,摆脱了平台束缚,成就跨平台优势。阴阳相补,Qt的开发,调试,发布没有了一条龙服务,以下要说的就是发布,编译好的exe无法直接运行,需要提取依赖库,用得最多的应该就是“windeployqt”这个命令,cd的烦恼谁用谁知道,那就用bat来封装这一系列命令。
一、依赖库提取
程序编译应使用“Release”方式,否则依赖库提取的会很大。这里以Qt 5.9.9为例。
1.1 常规 windeployqt
新建一个空目录,复制编译好的exe进去
打开开始菜单Qt目录下的的“Qt 5.9.9 (MinGW 5.3.0 32-bit)”快捷方式
输入cmd指令 “F:” 切换盘符
输入cmd指令 “cd Qt.Out” 进入需要提取依赖的exe目录
输入cmd指令 “windeployqt Cmd.exe” 执行提取
等待结束
直接运行exe即可打开程序
1.2 编写代码封装执行 bat
原理:使用Qt复制文件,生成bat文件来执行依赖提取。首先,找到Qt的编译环境,需要从这里提取依赖,右键开始菜单Qt目录下的的“Qt 5.9.9 (MinGW 5.3.0 32-bit)”快捷方式,打开属性
目标的内容包含有一个bat文件路径,找到这个文件的目录,右键这个文件用记事本打开
其中的“set PATH…”这一行就是Qt编译环境的设置语句,自定义的bat脚本需要这一句
void MainWindow::on_btnCmd_clicked()
{QString windeployqt=ui->txtC->text().simplified(); //Qt编译环境,“set PATH.......”,注意字符串‘\’在Qt代码中是‘\\’//除了Qt编译环境文本,路径类的字符串中尽量使用char‘\\’,不要使用‘/’QString originFilePath=ui->txtA->text().simplified(); //编译好的exe路径QString exportPath=ui->txtB->text().simplified(); //导出的依赖库目录QString name=originFilePath.split('\\')[originFilePath.split('\\').length()-1]; //文件名,提取时使用QString destFilePath=exportPath+"\\"+name; //导出的依赖库目录主程序路径QString batPath=QCoreApplication::applicationDirPath()+"/"; //bat批处理运行目录QString batFilePath=QCoreApplication::applicationDirPath()+"/打包.bat"; //bat批处理文件名称QDir dir;if(dir.mkdir(exportPath))//创建文件夹{}if(QFile::copy(originFilePath,destFilePath))//复制到提取目录{}QString bat="@echo off";bat.append("\r\n"+windeployqt);bat.append("\r\ncd /d "+exportPath);bat.append("\r\nwindeployqt "+name);QFile file(batFilePath);if(!file.exists()){}if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){}QByteArray array = bat.toUtf8();file.write(array, array.length());file.close();QProcess* process = new QProcess();process->setWorkingDirectory(batPath);QString commed = batFilePath;process->start(commed);process->waitForFinished();QMessageBox::information(this,"提示","完成");}
二、打包成单个文件
上一步得到的是exe运行的目录,可以使用“Enigma Virtual Box”工具打包成一个exe文件。
其中“文件选项”中要勾选“压缩文件”,点击“打包”完成。
三、依赖提取工具下载
https://download.csdn.net/download/u012619677/88442010
编译环境文本的内容在1.2中有说明。光标放置哪个文本框,拖动文件或目录至窗体会自动填写路径和目录。手动填写路径和目录时,应使用可见字符‘\’,不应使用‘/’。
四、联系作者
gshuaijun@163.com
Qt 打包发布(自定义Cmd提取依赖)相关推荐
- 系列推荐 | Qt 打包发布
作者: 一去.二三里 个人微信号: iwaleon 微信公众号: 高效程序员 只要你开发软件,那么打包发布永远是一个离不开的话题.我相信,无论是谁,或多或少都会遇到一些问题: 打包工具 N 多个,到底 ...
- python distutils模块(貌似是用来打包发布自定义python包的)
打包工具来的,貌似是用来打包发布自定义python包的 参考文章:尝试修改LabelImg,将以对顶角画框改成以对角线相交点画框
- Linux Qt打包发布应用程序
1.新建脚本文件pack.sh SensorMaster.sh (1)pack.sh #!/bin/sh exe="SensorMaster" #你需要发布的程序名称 des=&q ...
- VC2015 qt 打包发布
1.
- VS2019,C#打包发布生成单个exe
1.Problem C# 打包发布后exe必须依赖一些dll等文件才能运行(单独拿出来无法运行) 2.solution 首先生成–发布–目标选文件夹–特定目标选文件夹–选一个文件夹位置–完成 然后更多 ...
- 【QT】自定义软件打包发布
自定义软件打包发布 安装nisi和nisedit. 打开nisedit. 点击--文件--新建脚本:向导. 设置名称等信息,点击下一步. 选择安装图标--设置安装语言,点击下一步. 选择授权文件(Li ...
- qt程序部署在linux,Qt应用打包发布,部署真正的Qt程序LinuxWindows-Go语言中文社区...
最近在发布Qt应用时遇到了一些困难,Windows还好,在Linux上面发布遇到了不少的麻烦(实际Linux应该简单才对),经过在网络搜索发现帖子不少,但都比较片面,现把Qt应用程序在Linux&am ...
- Qt项目打包发布超详细教程
文章目录 前期准备工作 一.发布方式 (一)手动发布 (二)windeployqt发布 二.打包成.exe安装包 注意:后面的所有语句中涉及到编译器的,请大家自行替换成自己用的编译器,我这里使用的是M ...
- 【Qt5】入门Qt开发教程,一篇文章就够了(Creator、混合开发、多窗体、资源文件、打包发布、exe图标)
时间是人类生活的空间,我们在时域上展开生活,构建自己的世界 零|说明 本文面向初学者介绍Qt5开发,不求全面 但求过程完整 每个步骤只说明[一种]操作方式 代码和操作并重 在给出代码的同时介绍开发环境 ...
- qt调用linux 进程,Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014746574/article/d ...
最新文章
- 星巴克不使用两阶段提交
- ABAP检查日期and时间合法性的函数
- java io复用_学习Java编程-IO复用
- PHP8编译swoole出错,swoole自定义错误的方法
- MongoDB Shell操作
- android中setText不能传int值
- Linux下的find指令分析 , atime, ctime, mtime
- ORBSLAM2 理论部分_高斯金字塔(二)
- sqlcipher 加密解密工具使用详解
- 火车时刻表又更新了!
- 十三个大数据学习网站
- USB2.0接口CM4_5G mini驱动板搭配广和通FM150在Win11下的测速
- 《秘密》卷一:秘密-吸引力法则
- 机器学习系列--Naive Bayes Classification
- 发现个好东西pAppLocale,转码神器啊
- 支付宝、微信“重兵”搜索,小程序下半场或“变天”
- 直到世界的尽头(灌蓝高手)铃声 直到世界的尽头(灌蓝高手)...
- Sinfor AC版本升级需要注意的地方
- 坐地铁软件测试自学,基于UML的地铁联锁软件测试用例生成方法的研究
- html里position属性,科技常识:详解html中 position属性用法(四种)