当前位置: 首页 > news >正文

【QT】记录一次QT程序发布exe过程

记录一次QT程序发布exe过程

  • 使用windeploy与enigma发布独立的QT程序
    • 第一步 QT编译输出 **release** 版本
    • 第二步 QT 自带 windepoyqt 补全链接库
    • 第三步 enigma virtual box压缩打包为单一exe
    • 最后
      • 【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【**QtDeploy2exe.bat**】半自动部署
      • 【2024-06-09 12】 - 【补充】 关于打包后exe臃肿的问题以及软件生成新文件(文件夹)相关
        • exe文件太尼玛大了???
        • exe关联新文件(文件夹)的生成(文件外露)
    • 参考

使用windeploy与enigma发布独立的QT程序

第一步 QT编译输出 release 版本

你的编译器是啥就用啥就好了,我是 “ msvc 2019 64位 ”,选择“release”

QT release
这时候你会遇到问题如下:

在这里插入图片描述
很显然,这是同一级目录缺乏动态链接库 xx.dll 造成的,原来我都是傻傻的一个个找,拷贝粘贴。 **~我是傻逼~ **。

正确的办法: 我们来到第二步。

第二步 QT 自带 windepoyqt 补全链接库

  1. 在开始菜单中找到并打开你对应编译器的qt控制台工具
    在这里插入图片描述

  2. 切到对应目录或者直接把exe托人控制台,运行

    windeployqt xxxxx.exe

在这里插入图片描述

这时候,你会发现你的exe可以打开了,啦啦啦。。。

我比较顺序,如果你遇到其他问题,可以留言一起解决。

但是,目前带了一堆库文件,很臃肿,不方便发给别人用。

于是,来到第三步。

第三步 enigma virtual box压缩打包为单一exe

这部分有点坑,看完再操作,或者直接到下面最后查看完坑。

这个就得使用第三方应用了,下载链接如下:

enigma压缩打包

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当我以为好l=一切都好了的时候,我还特意检查只有一个exe的情况下,点击运行生成的exe,MFK,居然 又报错.

在这里插入图片描述

问题出在哪里呢,其实是因为直接拖入release文件夹导致(蛮猜哈)

我们点击ADD(增加) : 增加文件夹【递归】 VERY 重要,然后执行封包,您再看看。

谢天谢地,终于在运行起来了。

在这里插入图片描述

最后

如果你要经常管理-发布,那么你就把这写一个bat,调用qt的控制台执行对应的操作,然后enigma 的工程也可以保存到你的项目目录,方便多次使用。

【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【QtDeploy2exe.bat】半自动部署

会玩的自行修改,写的不好…轻喷。。。

在这里插入图片描述

自己新建bat,复制粘贴,修改路径参数,然后用qt的控制台去运行,半自动。

@echo off
rem QT打包小助手 by Iamzui (有需要自行修改)
echo QT pack to one single exe file helper by Iamruzirem release文件夹
set RELEASE_DIR=D:\Works\Dr_Zhong\Projects\QtProjects\GControl2024\releaserem release文件夹app路径
set APP_DIR=%RELEASE_DIR%\GControl.exerem 打包压缩工具Enigma Virtual Box路径 
set ENIGMAVBOX_PATH=D:\Softwares\Tools\Deploy\Enigma Virtual Box\enigmavb.execd /d "%RELEASE_DIR%"rem /bin文件夹判定
if not exist bin (mkdir binecho Folder 'bin' created.
) else (echo Folder 'bin' already exists.
)rem 运行windeployqt 打包
echo Deploying Qt libraries...
windeployqt   %APP_DIR%rem 拷贝exe主文件到bin
rem copy "%APP_DIR%" ".\bin\GControl.exe"echo Deployment completed.rem deploy结束后打开对应文件夹
rem start "" "%RELEASE_DIR%"rem 运行Enigma Virtual Box打包压缩
echo Running Enigma Virtual Box...start "" "%ENIGMAVBOX_PATH%"echo Please follow the instructions in the Enigma Virtual Box dialog. You now need do it by your own hands.echo 1. Choose input and output file path.(your oringinal exe and boxed file,you can rename it).echo 2. Add folder, choose add "ADD FOLDER RECURSIVE".echo 3. Click "File option", "enable files virtualization" and choose "Compress files".echo 4. Click "Process",and just wait for a while,and check in your deploy folder....echo Bat  run completed.pause

【2024-06-09 12】 - 【补充】 关于打包后exe臃肿的问题以及软件生成新文件(文件夹)相关

exe文件太尼玛大了???

问题来源:

xx: 哎呀我妈呀,我的exe终于出来了,也可以正常运行不报错,太好了。。。
如子: 你看看你最后打包的exe文件大小
xx: 我了个豆,1个多g,你妈,这。。。
如子:想解决这个问题,我给个最基础的方案,放在下面了。当然还有很多奇淫技巧,减小exe的大小方法,这个是从根本解决的最基本方法。
xx:感谢感谢!

这里再说明一下,就是bat最好针对的修改一下,就是把windepoyqt生成的库文件,生成放在额外的一个文件,应为release大多数都有不少编译后的中间文件,如果后面使用enigma压缩,就会导致不必要的文件,使得整个文件过于臃肿。

调整之后,我的exe从1.2G来到了170多M,不错。。。

这样就 简而不大

exe关联新文件(文件夹)的生成(文件外露)

这个就是enigma设置一下就好了,主要针对一些配置,本地数据库文件打包后没有直观的再本地生成的问题。

在这里插入图片描述

  1. 关于文件

这个没啥特殊,你代码编写的时候,注意生成的数据文件的相对路径要调整。

比如你的配置文件是config.json,代码里最好是和生成exe文件同一级别,要不然找不着。

  1. 关于文件夹

这个要注意了!!!如果你的文件夹是exe生成的,同名字的文件夹记住不要打包到exe里。。。

  • [<(^-^)> ] 如果我遇到问题,我会持续在这里更新

参考

[1]: https://blog.csdn.net/xideaha/article/details/132382764

相关文章:

【QT】记录一次QT程序发布exe过程

记录一次QT程序发布exe过程 使用windeploy与enigma发布独立的QT程序第一步 QT编译输出 **release** 版本第二步 QT 自带 windepoyqt 补全链接库第三步 enigma virtual box压缩打包为单一exe最后【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【**QtDeploy2exe.bat**】半自…...

数据分类分级,误把起点当终点

数据分类分级 吉祥学安全知识星球🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 01 — 数据分类分级的定义 数据分…...

stm32 启动文件分析

启动文件前面的介绍 启动文件是后缀为.s的汇编语言文本文件,每行前面的分号表示此行是注释行。 启动文件主要完成如下工作,即程序执行过程: - 设置堆栈指针SP __initial_sp。 - 设置PC指针 Reset_Handler。 - 设置中断向…...

playwright--简单使用

playwright的基本使用主要围绕着启动浏览器、导航至网页、操作页面元素、执行脚本和收集数据这几个核心步骤。以下是简单的使用流程,以同步API为例: 目录 1. 导入库并启动playwright 2. 创建新页面并导航 3. 操作页面元素 4. 异步操作与等待 5. 数…...

pom学习笔记:kimi的自动化操作

1.先看结构: 声明:我是初学,可能有不合理的地方。 2.Base层。 我是把原来一个kimi的自动问答的代码改过来。 分析:其实我是新手,因为我用的浏览器是固定的,也没有打算和别人用。所以浏览器层面年的全部写…...

【iOS】UI学习——界面切换

界面切换 push和poppresent和dismiss示例程序 push和pop 在 Objective-C 中,pop 和 push 通常是与 UINavigationController 一起使用的方法,用于控制导航栈中视图控制器的跳转和回退。 push 和 pop 通常成对使用,用于实现导航栈的前进和后退功能。当用户进入新的视图控制器时…...

【悬架笔记三】1/4被动悬架垂向动力学仿真+频域特性分析

1/4被动悬架 代码: %书第156页、159页 clc clear close all %% 一.悬架参数 ms320; mw50; Ks22000; Cs1500; Kw195000; f00.07; %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 二.垂向振动动力学仿真 %% 二.1.状态方程 A [0 1 0 -1;.…...

【C++】——继承(详解)

一 继承的定义和概念 1.1 继承的定义 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保 持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类,被继承的称为基类…...

openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现

文章目录 openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现299.1 概述299.2 使用指导299.2.1 前提条件299.2.2 SQL流水采集方法299.2.3 操作步骤299.2.4 使用方法示例299.3 获取帮助299.4 命令参考299.5 常见问题处理openGauss学…...

Git 分支管理规范化[Git Flow ]分支管理策略

分支命名规范 master 分支&#xff1a;master 分支只有一个&#xff0c;名称即为 master。GitHub 现在叫 main develop 分支&#xff1a;develop 分支只有一个&#xff0c;名称即为 developfeature 分支&#xff1a;feature/<功能名>&#xff0c;例如&#xff1a;featu…...

一键Mock工具(Http协议接口调试工具)

点击下载《一键Mock工具&#xff08;Http协议接口调试工具》 1. 前言 在进行Web开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑…...

Golang的context

目录 context的基本使用 为什么需要context Context interface 标准 error emptyCtx cancelCtx Deadline 方法 Done 方法 Err 方法 Value 方法 context.WithCancel() newCancelCtx WithCancel中propagateCancel cancel timerCtx valueCtx context的基本使用…...

Android 各个版本名称和特性总结(持续更新)

我们就从Android 5.0开始吧&#xff0c;因为从写文时起&#xff0c;大部分手机都到5.0了。 目录 Android5.0 &#xff08;Lollipop 棒棒糖&#xff09;新特性 Android6.0新特性 Android7.0新特性 Android8.0(O)新特性 Android9.0新特性 Android10.0(Q)新特性 Android11…...

9.0 Android中的网络技术

Android中网络相关的技术&#xff0c;主要分别两种&#xff0c;一种为直接显示网页&#xff0c;另外一种为获取服务器中的数据进行设置。 权限声明 访问网络是需要声明权限 <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"…...

linux查看端口是否被占用 / 包含某个字符的文件/当前正在运行的进程/根据端口号查找进程

查看端口是否被占用 netstat -tuln | grep 80查看包含某个字符的文件 grep -rl "aaa" .r &#xff1a;递归搜索子目录。l &#xff1a;只显示包含匹配字符串的文件名。 ack "your_string"查看当前正在运行的进程 ps aux或者使用 top 命令用于实时显示当…...

解锁 JavaScript ES6:函数与对象的高级扩展功能

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;ES6函数扩展&#x1f353;1 默认参数&#x1f35…...

算法金 | 10 大必知的自动化机器学习库(Python)

本文来源公众号“算法金”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;10 大必知的自动化机器学习库&#xff08;Python&#xff09; 一、入门级自动化机器学习库 1.1 Auto-Sklearn 简介&#xff1a; Auto-Sklearn 是一个自动…...

微信小游戏开发难度大吗?开发流程有哪些?

微信小游戏的开发难度因项目的复杂度和规模而定&#xff0c;一般来说&#xff0c;休闲益智类的小游戏的开发周期相对较短&#xff0c;大约在10个工作日到1个月。如果涉及到复杂的算法、高级的交互或特殊的效果&#xff0c;开发时间可能会相应延长。 微信小游戏的开发流程包括需…...

Qt程序打包成单个exe文件

文章目录 0. 准备工作1. 使用 windeployqt 提取必要的动态链接库和资源文件1.1 操作步骤1.2 补充 2. 使用 Enigma Virtual Box将文件夹打包成单个exe2.1 操作步骤 0. 准备工作 Qt程序打包用到的工具有&#xff1a; windeployqt &#xff1a;安装Qt时自带Enigma Virtual Box 下…...

【机器学习】GANs网络在图像和视频技术中的应用前景

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 1. &#x1f525;引言 背景介绍 研究意义 2. &#x1f388;GANs的基本概念和工作原理 生成对抗网络简介 工作原理 3. &#x1f916;GANs在图像生成中的应用 图像超分辨率 工作原理 图像去噪 工作原理 图…...

DICOM文件结构深度解析:从Tag到像素数据的完整指南

1. 揭开DICOM的神秘面纱&#xff1a;医疗影像的通用语言 第一次接触DICOM文件时&#xff0c;我完全被那些十六进制代码搞懵了。这就像拿到一份用外星语写的病历&#xff0c;明明知道里面藏着重要信息&#xff0c;却怎么也读不懂。后来才发现&#xff0c;DICOM其实是医疗影像界…...

3分钟实现Zotero与Notion双向联动:Notero完整使用指南

3分钟实现Zotero与Notion双向联动&#xff1a;Notero完整使用指南 【免费下载链接】notero A Zotero plugin for syncing items and notes into Notion 项目地址: https://gitcode.com/gh_mirrors/no/notero 你是否曾为学术研究中的文献管理而烦恼&#xff1f;Zotero中精…...

算法题(回溯)

一、题目1、括号生成&#xff08;LC 22&#xff09;2、单词搜索&#xff08;LC 79&#xff09;二、题解1、括号生成&#xff08;LC 22&#xff09;&#xff08;1&#xff09;分析采用回溯的思想解决。递归方法包括 left、right、ans、path、n 五个核心参数&#xff0c;其中 lef…...

终点亦是起点

小端AI经过8个月的反复打磨&#xff0c;不仅领先外国顶级水平&#xff0c;而且功能稳定&#xff0c;我也永久保持纯本地运行100%开源&#xff0c;如今已超过30万下载&#xff0c;不管未来百万还是千万用户&#xff0c;绝不开会员&#xff0c;献给国家的申明永久有效&#xff0c…...

AI工作流框架实战:从脚本到自动化流程的架构设计与应用

1. 项目概述&#xff1a;当AI遇上工作流最近在折腾自动化工具链&#xff0c;发现一个挺有意思的项目叫ai-flow。这名字听起来就挺直白&#xff0c;AI 工作流。简单来说&#xff0c;它就是一个用代码来编排和自动化AI任务&#xff08;比如调用大语言模型、处理数据、执行特定操…...

独立开发者实战:AI编程的泥泞战壕与生存指南

1. 从“氛围编程”到真实战场&#xff1a;一个独立开发者的自白如果你最近也在关注独立开发或者AI编程工具&#xff0c;那你一定听过“氛围编程”这个词。它听起来很酷&#xff0c;对吧&#xff1f;仿佛你只需要对着AI描述一下心中的“氛围感”&#xff0c;一个完美的应用就能应…...

从相关性反馈到视觉理解:计算机视觉检索技术的演进与落地

1. 从“荒谬”到“范式转移”&#xff1a;一位计算机视觉先驱的二十年跋涉1995年&#xff0c;当互联网还处于襁褓之中&#xff0c;用技术自动搜索图片的想法听起来近乎“荒谬”。这是微软亚洲研究院副院长、首席研究员芮勇博士在回顾自己研究生涯起点时的感慨。二十多年后&…...

Armv8-A架构缓存维护指令详解与应用实践

1. A64系统指令中的缓存维护操作概述在Armv8-A架构中&#xff0c;缓存维护操作是确保系统内存一致性的关键机制。作为体系结构设计中最精妙的部分之一&#xff0c;缓存维护指令直接操控处理器缓存层次结构的状态&#xff0c;对系统性能、功能正确性和安全性都有着决定性影响。现…...

Wireshark 命令行实战指南 ———— 自动化抓包与高效分析

1. 为什么需要Wireshark命令行模式 很多网络工程师第一次接触Wireshark时&#xff0c;都是通过图形界面进行操作。鼠标点点就能开始抓包&#xff0c;确实很方便。但当你需要处理以下场景时&#xff0c;图形界面就显得力不从心了&#xff1a; 服务器环境没有图形界面&#xff0c…...

GroundTruth-MCP:为AI生成代码构建实时事实核查防火墙

1. 项目概述&#xff1a;当AI助手自信地写出过时代码时你的AI助手刚刚又“自信满满”地给你生成了一堆过时的代码。它告诉你React 19里forwardRef用得没问题&#xff0c;Next.js 15的cookies()还是同步函数&#xff0c;或者用字符串模板拼接SQL查询“既简洁又高效”。更糟的是&…...