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提取依赖)相关推荐

  1. 系列推荐 | Qt 打包发布

    作者: 一去.二三里 个人微信号: iwaleon 微信公众号: 高效程序员 只要你开发软件,那么打包发布永远是一个离不开的话题.我相信,无论是谁,或多或少都会遇到一些问题: 打包工具 N 多个,到底 ...

  2. python distutils模块(貌似是用来打包发布自定义python包的)

    打包工具来的,貌似是用来打包发布自定义python包的 参考文章:尝试修改LabelImg,将以对顶角画框改成以对角线相交点画框

  3. Linux Qt打包发布应用程序

    1.新建脚本文件pack.sh SensorMaster.sh (1)pack.sh #!/bin/sh exe="SensorMaster" #你需要发布的程序名称 des=&q ...

  4. VC2015 qt 打包发布

    1.

  5. VS2019,C#打包发布生成单个exe

    1.Problem C# 打包发布后exe必须依赖一些dll等文件才能运行(单独拿出来无法运行) 2.solution 首先生成–发布–目标选文件夹–特定目标选文件夹–选一个文件夹位置–完成 然后更多 ...

  6. 【QT】自定义软件打包发布

    自定义软件打包发布 安装nisi和nisedit. 打开nisedit. 点击--文件--新建脚本:向导. 设置名称等信息,点击下一步. 选择安装图标--设置安装语言,点击下一步. 选择授权文件(Li ...

  7. qt程序部署在linux,Qt应用打包发布,部署真正的Qt程序LinuxWindows-Go语言中文社区...

    最近在发布Qt应用时遇到了一些困难,Windows还好,在Linux上面发布遇到了不少的麻烦(实际Linux应该简单才对),经过在网络搜索发现帖子不少,但都比较片面,现把Qt应用程序在Linux&am ...

  8. Qt项目打包发布超详细教程

    文章目录 前期准备工作 一.发布方式 (一)手动发布 (二)windeployqt发布 二.打包成.exe安装包 注意:后面的所有语句中涉及到编译器的,请大家自行替换成自己用的编译器,我这里使用的是M ...

  9. 【Qt5】入门Qt开发教程,一篇文章就够了(Creator、混合开发、多窗体、资源文件、打包发布、exe图标)

    时间是人类生活的空间,我们在时域上展开生活,构建自己的世界 零|说明 本文面向初学者介绍Qt5开发,不求全面 但求过程完整 每个步骤只说明[一种]操作方式 代码和操作并重 在给出代码的同时介绍开发环境 ...

  10. qt调用linux 进程,Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014746574/article/d ...

最新文章

  1. 星巴克不使用两阶段提交
  2. ABAP检查日期and时间合法性的函数
  3. java io复用_学习Java编程-IO复用
  4. PHP8编译swoole出错,swoole自定义错误的方法
  5. MongoDB Shell操作
  6. android中setText不能传int值
  7. Linux下的find指令分析 , atime, ctime, mtime
  8. ORBSLAM2 理论部分_高斯金字塔(二)
  9. sqlcipher 加密解密工具使用详解
  10. 火车时刻表又更新了!
  11. 十三个大数据学习网站
  12. USB2.0接口CM4_5G mini驱动板搭配广和通FM150在Win11下的测速
  13. 《秘密》卷一:秘密-吸引力法则
  14. 机器学习系列--Naive Bayes Classification
  15. 发现个好东西pAppLocale,转码神器啊
  16. 支付宝、微信“重兵”搜索,小程序下半场或“变天”
  17. 直到世界的尽头(灌蓝高手)铃声 直到世界的尽头(灌蓝高手)...
  18. Sinfor AC版本升级需要注意的地方
  19. 坐地铁软件测试自学,基于UML的地铁联锁软件测试用例生成方法的研究
  20. html里position属性,科技常识:详解html中 position属性用法(四种)

热门文章

  1. 猎头出500万年薪挖百度高T,被无情拒绝!网友:是我也这么干!
  2. 校园表白墙php源码,校园表白墙网站PHP源码
  3. 医疗图像翻译预备知识之不同类型的肿瘤
  4. winform设置窗体颜色为渐变色
  5. Github上的watch、star和fork分别是什么意思
  6. 48_ue4进阶末日生存游戏开发[本地存储游戏数据]
  7. 迟到的分享,2014年每天收益5%的高频机器人公开
  8. 五月集训(第12天) —— 链表
  9. 【C】Malloc与结构体,其实就是C语言里面的new和类
  10. Leap Motion Using Unity3D——环岛跑车篇