C++常用的支持中文的GUI库Qt 6之三: 项目的发布

news2024/11/25 21:40:25

C++常用的支持中文的GUIQt 6之三: 项目的发布

本文接着上一篇“C++常用的支持中文的GUI库Qt 6之二:项目的结构、资源文件的使用” https://blog.csdn.net/cnds123/article/details/130741807介绍,并使用其中的例子。

程序代码能正确编译运行,就可以考虑项目的发布了。

发布 Qt 程序需要考虑多种因素。您需要了解目标平台的要求,了解如何编译和打包程序,并能够管理其依赖项和发布版本。

Qt Creator将项目源文件和编译生成的文件进行了分类存放。初学者常常找不到生成的可执行文件.exe在哪儿。

在Qt Creator中,生成的可执行文件(.exe文件)默认会放在项目的构建目录中。构建目录的位置可以在Qt Creator的项目设置中进行配置。

构建和运行(Build & Run)目录

Qt Creator将项目源文件和编译生成的文件进行了分类存放。构建目录用于存放此项目在编译过程中生成的文件,例如数据库文件、可执行文件等。

查看或修改构建目录

在Qt Creator中查看或修改项目的构建目录,参见下图,按照以下步骤操作:

打开Qt Creator并加载你的项目。

在左侧面板中,选择“Projects(项目)” 图标(通常显示为一个扳手图标)。

在“项目”选项卡中,根据实际情况查看或修改构建目录

保存更改后,下次构建时,项目将使用新的构建目录进行编译。

注意:修改构建目录会影响之前构建产物的存放位置,可能需要重新构建项目以确保之前的构建产物被更新。在某些情况下,可能需要执行清理操作(在顶部菜单栏上点击“构建”>“清理项目”),以防止因旧构建文件而导致的问题。

构建模式(构建版本)

Qt提供了三种不同的构建模式(构建版本):Debug、Profile和Release。这些模式涉及不同的编译选项和优化设置,用于满足开发过程中不同阶段的需求。

Debug(调试)模式:

Debug模式主要用于开发和调试应用程序。它使用额外的信息(如调试符号),使开发者能够更轻松地定位和解决代码问题。在Debug模式下,编译器通常不会执行任何优化操作,以确保代码的行为与预期一致。此配置下生成的可执行文件体积较大,运行速度较慢。而Debug模式下的项目可以结合调试器,在运行时进行断点调试、内存分析等操作。

Profile(性能分析)模式:

Profile模式类似于Debug模式,但包含了额外的性能分析工具(如性能计数器和跟踪器)。这些工具允许开发者检查应用程序的性能瓶颈和资源消耗。在Profile模式下,编译器可能会执行某些优化,以便更接近实际的运行环境。然而,这种模式仍然包含调试信息,因此可执行文件体积仍然较大。Profile模式适用于需要对代码进行性能分析和调整的场景。

Release(发布)模式:

Release模式用于准备应用程序的最终版本。在Release模式下,编译器将执行各种优化操作,以提高应用程序的执行速度和减小文件大小。这种模式下的可执行文件不包含调试信息,因此体积较小,运行速度较快。然而,由于缺少调试信息,使用调试器定位问题变得困难。Release模式通常用于生成可以分发给用户的应用程序版本。

在Qt Creator中,你可以从构建模式下拉菜单中选择需要的构建模式(通常位于左下角)。选择合适的模式后,点击“构建”图标进行编译。请注意,在切换构建模式时,确保对应的构建目录已被正确设置。

将想要发布的应用程序,使用release模式下编译,然后生成可执行文件。

使用Release模式进行编译

请注意,在使用Release模式编译应用程序时,确保你已正确设置了项目,并解决了所有编译警告和错误。

在Qt Creator中使用Release模式进行编译,请按照以下步骤操作:

打开Qt Creator并加载你的项目。

在左下角,找到构建模式切换器。它通常显示为一个下拉菜单,可以在Debug、Profile和Release模式之间切换。

从下拉菜单中选择“Release”模式。此时,Qt Creator将使用Release模式设置对项目进行编译。

若要开始编译,点击顶部工具栏上的绿色播放图标旁边的锤子图标(或者按快捷键Ctrl+B或Cmd+B,或从顶部菜单栏选择“构建”>“构建项目”)。

Qt Creator将使用Release模式进行编译。编译完成后,你可以在构建目录下的"release"子文件夹中找到生成的可执行文件。

在构建目录下的"release"子文件夹中找到生成的可执行文件,我这里是ch01.exe。到此,还不能使用,双击它运行会报错,往下看。

项目的发布

如何让上面ch01.exe让他人使用呢?先不要高兴太早,往下看。

使用QT Creator创建的项目,可以在QT Creator中启动运行,但在"release"子文件夹中双击ch01.exe,文件,却提示系统错误:

怎么办?往下看,手工建立一个文件夹如MyQt,将Qt安装目录下 6.2.4\mingw_64 (其中6.2.4是Qt版本号,据你的实际情况而定)文件夹中的bin文件夹和plugins文件夹复制到MyQt文件夹中,然后将ch01.exe复制到MyQt文件夹这的bin文件夹,就可以将MyQt文件夹给他人用了。其中ch01.exe可以改名。将这个文件夹发给一个没有安装过Qt 的电脑,也可以打开。不过这样发布包含的无用的文件较多,也不太专业。

下面介绍使用Qt的windeployqt工具发布

windeployqt.exe是Qt自带的Windows平台发布工具,用于创建应用程序发布包,它可以自动为一个应用程序复制其运行所需的各种库文件、插件。官方介绍Qt for Windows - Deployment | Qt 6.5

在“开始”菜单中打开Qt命令行终端界面,参见下图:

【在Qt命令行终端中输入

windeployqt.exe -h

回车,可以查看命令帮助

在你认为合适的位置新建一个文件夹,将“release”文件夹下的.exe文件复制到新建的文件夹中,我这里在D:盘建立一个文件夹MyQtTest,将ch01.exe复制到该文件夹

命令行中输入

windeployqt 应用程序完整路径

我这里是

windeployqt  D:\MyQtTest

回车即可执行发布命令,参见下图:

 提示:如果应用程序路径中包含空格,需要用双引号将整个路径字符串包裹起来。

等待完成后,进入到应用程序目录可以看到,目录中增加了很多依赖库和数据文件。参见下图:

点击这个目录中你的.exe就可以直接运行了:

将这个文件夹发给一个没有安装过Qt 的电脑,看是否可以打开。若没问题就可以这样发布了。

更进一步可以制作安装文件。有很多制作安装文件的软件,如Inno Setup 是一个免费的 Windows 安装程序制作软件,还可以使用官方的Qt Installer Framework工具Qt Installer Framework框架制作安装包。Qt提供的Qt Installer Framework是一组工具和实用程序,用于创建一次安装程序。

官方下载:https://download.qt.io/official_releases/qt-installer-framework/

官方文档:https://doc.qt.io/qtinstallerframework/index.html

对于这些,在此就不多说了。

最后,再次提示,Qt 6及以后版本不再支持Windows 7。

附录

Qt 6.2.1 官方文档编制 (中文人工翻译) http://qt6.digitser.top/
Qt Creator使用教程的简单说明https://www.zhangshengrong.com/p/Ap1Zey3AX0/
Qt应用程序的发布(windeployqt)https://blog.51cto.com/u_15346415/5172452

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1. Tomcat整体架构及其设计精髓分析

MySQL性能调优 1.Tomcat的整体架构1.1 Tomcat介绍1.1.1 Servlet基础回顾 1.2 目录结构1.3 web应用部署的方式1.4 结合Server.xml理解Tomcat架构1.5 架构图 2. Tomcat核心组件详解2.1 Server 组件2.2 Service组件2.3 连接器Connector组件2.3.1 ProtocolHandler 组件2.3.1.1 EndP…

全志V3S嵌入式驱动开发(移植linux kernel和rootfs)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 除了少部分嵌入式设备使用vxworks和freertos之外,大部分嵌入式都是使用linux来做基础os来使用的。linux使用场景很多,除了大…

智慧城市同城V4小程序V2.24独立开源版 + 全插件+VUE小程序开源前端+最新用户授权接口

智慧城市同城V4小程序V2.22开源独立版本月最新版,与上一版相比修复了一些小细节,功能本身并无大的变化。新版系统包含全插件、包括很多稀缺收费的插件都在里面如括招聘、 家政等,外加小程序的VUE开源前端,整个系统全开源&#xff…

chatgpt赋能python:PythonTic:了解一种强大的测试框架

Python Tic: 了解一种强大的测试框架 当你编写代码时,测试通常是不可或缺的一部分。Python Tic是一个出色的测试框架,它可以帮助您自动化测试和验证您的代码。 简介 Python Tic是一种基于Python的测试框架,它能够测试您的代码的各个方面&a…

鹅厂程序员的9个生存法则

👉腾小云导读 本文作者在腾讯多年,主要从事的是腾讯云CDN、EdgeOne产品的后台研发工作。作者在云计算领域遇到了不少代码设计和程序设计的问题,他对于如何把项目中的代码标准化、提高开发维护的效率,做了总结梳理。本篇为各位分享…

解密Java Class文件不为人知的秘密

Java 诞生多年,因此在网络上,有关 Java Class 文件格式解析的文章有很多,但他们大多数都是在列举《Java 虚拟机》中定义的格式,通读下来,好像所有的东西都讲清楚了,但是我个人好像并没有看懂,不…

舵机云台实现体感姿态跟随功能

1. 功能说明 本文示例将实现R207样机舵机云台根据六轴陀螺仪传感器数据实现姿态跟随的功能。 2. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 主控板 Basra主控板(兼容Arduino Uno)‍ 扩展板 Bigfish2.1扩…

【012】C++循环控制语句 for 和 while 详解

C循环控制语句 for 和 while 详解 引言一、循环控制语句 for1.1、for 循环语句1.2、break和continue1.3、for循环的嵌套 二、循环控制语句while2.1、while循环语句2.2、break和continue2.3、do...while()循环语句 总结 引言 💡 作者简介:专注于C/C高性能…

【JavaSE】Java基础语法(九):封装

文章目录 ☔1. private关键字☔2. private关键字的使用☔3. this关键字☔4. this内存原理☔5. 封装思想 ☔1. private关键字 概述 : private是一个修饰符,可以用来修饰成员(成员变量,成员方法) 特点 : 被private修饰的成员&…

公网远程连接Redis数据库【内网穿透】

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 转发自cpolar内网穿透的文章:公网远程连接…

(El-button-group)解决:优化 el-button 实现 button 相连且动态切换的使用案例(涉及:动态绑定 class )

Ⅰ、Element-ui 提供的组件与想要目标情况的对比&#xff1a; 1、Element-ui 提供组件情况&#xff1a; 其一、Element-ui 自提供的代码情况为(示例的代码&#xff0c;例子如下)&#xff1a; // Element-ui 自提供的代码&#xff1a; <template><div><el-but…

深度解析多线程的创建方式和正确启动多线程

一、创建多线程 1. 实现多线程 java 实现多线程的方式准确来说有两种&#xff08;oracle官方文档说的&#xff09;&#xff1a; &#xff08;1&#xff09;实现 Runnable 接口&#xff0c; 重写run()函数&#xff0c;运行start()方法 代码演示&#xff1a; /*** 用Runnable…

移动端浏览器性能优化探索

在移动端的页面开发过程中&#xff0c;我们经常提及页面性能优化、消除页面卡顿的话题&#xff0c;如何确定优化策略&#xff0c;我们首先应当对页面卡顿的行为有所认知。 前言 &#xfeff; 页面的卡顿现象可以比较明确的分为三个类型&#xff0c;分别是 “画面撕裂” 、“丢帧…

让你不再好奇怎么给小说配音

你是否曾经想象过&#xff0c;当你在读小说时&#xff0c;你可以听到人物的声音&#xff0c;感受到情感和气氛的变化&#xff1f;有声书的出现已经让这一切成为可能。然而&#xff0c;如何为小说创造生动的配音效果却是一个需要仔细考虑的问题。如果你还不知道怎么给小说配音的…

酷开会员丨版权时代,酷开科技打造更多优质内容服务消费者

以版权产业为核心的文化产业&#xff0c;需要重视版权、鼓励创新&#xff0c;才能形成文化创新的环境与氛围&#xff0c;这也是版权时代的发展趋势。在版权时代&#xff0c;付费观看是基本意识&#xff0c;比如电视内容供应方提供了大量免费的资源&#xff0c;观众为观看更精良…

数据结构之二叉树的基本实现

在我们之前已经了解的堆这样的完全二叉树的实现&#xff0c;也对树型结构有了一些了解&#xff0c;那么今天我们来看看二叉树的一些性质。 因为二叉树是一种每个节点至多只有两个子树&#xff08;即二叉树的每个节点的度不大于2&#xff09;&#xff0c;并且二叉树的子树有左右…

二、Django REST Framework (DRF)序列化反序列化数据校验

参考&#xff1a; DRF 官方文档&#xff1a; Serializers - Django REST framework中文站点 为什么要学DRF和什么是REST API | 大江狗的博客 上一章&#xff1a; 一、Django REST Framework (DRF)& RESTful 风格api_做测试的喵酱的博客-CSDN博客 下一章&#xff1a;…

【C++】类和对象(中上):类的六个默认成员函数——构造函数、析构函数、拷贝构造函数!

目录 前言&#xff1a; 一、类的默认成员函数&#xff1a; 二、构造函数&#xff1a; 1.特性&#xff1a; 构造函数调用规则&#xff1a; 1.无参数的构造函数&#xff08;默认构造函数&#xff09;&#xff1a; 2.带参数的构造函数&#xff1a; 3.全缺省的构造函数&…

Qt编写视频监控系统75-计算实时码率并显示

一、前言 做监控摄像头的实时视频显示&#xff0c;一般还会要求统计实时码率显示在通道画面上&#xff0c;一个是为了测试下整个软件的性能&#xff0c;同时也看下当前到底是主码流还是子码流&#xff0c;设备到底是不是真的按照设定的码流大小来传输视频数据的。视频码率就是…

【Mysql】 数据类型

文章目录 【Mysql】 数据类型数据类型分类数值类型1. tinyint类型2. bit类型3. 小数类型 字符串类型1.char2.varchar3. 日期和时间类型4. enum 和 set 【Mysql】 数据类型 mysql中数据类型的作用&#xff1a; 约束操作者的行为更清晰的代码逻辑不同的功用 – 例如&#xff0c…