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

Qt的程序如何打包详细教学

生成Release版的程序

在打包Qt程序时,我们需要将发布程序需要切换为Release版本(Debug为调试版本),编译器会对生成的Release版可执行程序进行优化,使生成的可执行程序会更小。

debug版本

debug版本是一种开发过程中的构建,主要用于调试和开发。其主要特点包括:

  • 包含调试信息:debug版本包含了许多调试信息和工具,如符号表、行号和代码的其他元数据,这些都有助于开发者在调试时更容易地追踪代码执行。
  • 自动初始化变量:在debug版本中,未初始化的变量可能会被自动初始化,以防止使用未定义的值。这对于调试过程非常有利,开发者能够更容易地追踪潜在问题。
  • 优化级别低:为了更便于调试,debug版本通常针对可读性进行优化,而不是性能。因此,它可能比release版本慢。
  • 功能完整:debug版本保留了所有功能,包括开发过程中用来测试的功能。

debug版本主要用于开发阶段,方便开发人员进行测试和调试。然而,它不适合最终用户使用,因为性能较低且可能包含未经过测试的代码。

release版本

release版本是最终产品的构建,旨在提供给用户或客户使用。其主要特点包括:

  • 去除调试信息:release版本通常去除了所有调试信息,以减小文件大小并提高性能。
  • 不自动初始化变量:在release版本中,编译器通常不会自动初始化未使用的变量,这有助于提高性能。
  • 高优化级别:release版本经过编译器优化,以提高代码的执行速度和效率。这可能包括内联函数、循环展开等优化技术。
  • 功能精简:某些调试用的功能可能在release版本中被禁用,以提升安全性和性能。

release版本是经过测试的稳定版本,适合向用户发布和生产环境使用。

profile版本

profile版本是一种介于debug和release之间的构建类型,旨在兼顾性能和调试。其主要特点包括:

  • 文件大小适中:profile版本编译后的可执行文件比debug版本小很多,但比release版本大一点。
  • 包含部分调试信息:profile版本带有部分调试符号信息,这使得开发者在需要时能够进行一定的调试。
  • 性能更优:由于进行了部分优化,profile版本的性能通常比debug版本更优,但可能略逊于release版本。

profile版本适用于那些需要在开发过程中进行一定调试,但又希望获得比debug版本更好性能的场景。

打包

构建完当前项目后,找到生成的带Release后缀的构建目录。最后再进入release文件夹找到exe文件单独复制到一个新建文件夹里面

打开cmd控制台,cd进入该路径

再输入windeployqt Pix.exe(后面输入你自己的程序名称) ,完成后文件夹下会自动添加许多文件

下载打包工具:Software Protection, Software Licensing, Software Virtualization 

下载完后选择中文更易操作

 

 

第一:选择exe文件

第二:选择打包好后文件的名称和存放路径

第三:把除exe外的文件拖入到Virtual Box Files树内

第四:点击执行封包

运气好的话就已经可以发给其他人运行了!

运行exe报错cannot load library Qt5Core.dll

把打包过的exe发给另一个电脑使用,打开exe会报错:cannot load library Qt5Core.dll
(实际上使用 Enigma Virtual Box 打包时已经包含了 Qt5Core.dll 这个库),但是自己电脑上运行确不会报错

Qt5Core.dll 作为 Qt 框架的核心组件,依赖于多个其他的动态链接库(DLL)才能正常运行,其中包括 libgcc_s_dw2-1.dlllibwinpthread.dll 和 libstdc++-6.dll

我们在Qt目录下找到这三个文件放到Virtual Box Files树内再执行封包


http://www.kler.cn/a/377983.html

相关文章:

  • acitvemq AMQP:因为消息映射策略配置导致的MQTT接收JMS消息乱码问题 x-opt-jms-dest x-opt-jms-msg-type
  • 从 ELK Stack 到简单 — Elastic Cloud Serverless 上的 Elastic 可观察性
  • 打破视障壁垒,百度文心快码无障碍版本助力视障IT从业者就业无“碍”
  • UE(虚幻)学习(四) 第一个C++类来控制小球移动来理解蓝图和脚本如何工作
  • 面试突击-JAVA集合类(持续更新...)
  • 两种不同的LuaBehaviour生命周期绑定
  • React常用前端框架合集
  • Ubuntu下安装和配置MySQL5.7教程
  • C/C++中的基本数据类型
  • Qt——QWidget
  • Java类和对象(上篇)
  • Github 2024-10-30C开源项目日报 Top10
  • 正则表达式学习
  • 【系统架构设计师】2024年上半年真题论文: 论模型驱动架构设计方法及其应用(包括解题思路和素材)
  • 操作系统——计算机系统概述——1.4操作系统结构
  • 【2】Elasticsearch 查询从基础到高级
  • jsweb2
  • Java实现动态切换ubuntu壁纸功能
  • 自定义日志打成jar包引入项目后不生效
  • 3D Gaussian Splatting 入门
  • 8.5K+ Star!Skyvern:一个基于LLMs和计算机视觉自动化浏览器工作流的工具
  • Day 41 || 1049. 最后一块石头的重量 II 、494. 目标和、474.一和零
  • 机器学习之fetch_olivetti_faces人脸识别--基于Python实现
  • 数据智能驱动金融策略优化:民锋智能分析技术的应用
  • 深度学习-38-基于PyTorch的卷积神经网络AlexNet
  • 【Java笔记】1-JDK/JRE/JVM是个啥?