在Qt编写的exe或者dll中设置版本号

2024-06-18 02:20
文章标签 设置 exe dll qt 编写 版本号

本文主要是介绍在Qt编写的exe或者dll中设置版本号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.背景

在别人编写的exe或者动态库中,通过右键–》属性–》详细信息中,通常都有版本信息:
在这里插入图片描述

那我们自己编译出来的Qt程序,如何设置这些版本号呢?

2.解决方案

参考【.pro文件中设置版本等信息】,只要在工程的.pro文件中添加以下信息就可以了:

QMAKE_LFLAGS += -Wl,--kill-at  #  避免有些平台如VB调用库出问题
CONFIG += skip_target_version_ext # 避免在dll文件的名字里面自动加数字VERSION = 1.2.3QMAKE_TARGET_PRODUCT = 产品名称
QMAKE_TARGET_COMPANY = 公司
QMAKE_TARGET_DESCRIPTION = 文件描述
QMAKE_TARGET_COPYRIGHT = 版权

比如说我的工程设置之后,效果是这样的:
在这里插入图片描述

3.在h或者cpp文件中使用该VERSION变量

在.pro文件中设置了版本后,我们可能需要在cpp文件中取得这个版本号。比如说我们在编译一个函数库给别人使用,那么一般都会提供一个函数类似QString version()返回当前库的版本,用来做版本确认。
有没有什么办法,可以从cpp文件中读取到.pro文件中定义的这个VERSION变量?
其实是有的,参考这里:【如何将Qt .Pro文件中的自定义变量内容 或 内置变量的内容 获取 到Qt的.cpp或.h中使用…】,我们可以这样操作:

在.pro文件中追加一个宏定义SDK_VERSION,其值等于VERSION

DEFINES += SDK_VERSION=$$VERSION

然后在cpp中就可以这样读取到了:

---#define SSS(R) #R
#define TTT(R) SSS(R)int main(int argc, char *argv[])
{
---qDebug() << "version:" << TTT(SDK_VERSION);
---
}

为什么这样就可以读取到呢?
仔细观察,假如我们直接用#SDK_VERSION的话,会直接得到字符串"SDK_VERSION"。因此,要等SDK_VERSION先展开之后,再将其转成字符串。也就是要二次展开,所以,就设计了TTT这宏定义。我们来看看展开过程:
源码–》TTT(SDK_VERSION)
第一次展开–》SSS(0.16.73.13)
第二次展开–》#0.16.73.13
这样子就得到字符串了。

4.注意

但是这样操作后,假如你更新.pro中的VERSION值后,编译,一般会发现程序这边得到的TTT(SDK_VERSION)是旧的。这时候最好是先执行clean再编译。感觉这个是QtCreator的bug。
在这里插入图片描述
有时候QtCreator的行为怪怪的,各种出bug,有时候是程序不可以运行、有时候是无法调试、有时候是代码修改了但是没生效、、、。总之遇到这些奇奇怪怪的情况时,都可以试一下这个Clean命令,让其重新编译一次。还不行的话,重启电脑试试(真的,我就是这样做了就好了);


参考:
【.pro文件中设置版本等信息】
【如何将Qt .Pro文件中的自定义变量内容 或 内置变量的内容 获取 到Qt的.cpp或.h中使用…】

这篇关于在Qt编写的exe或者dll中设置版本号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071042

相关文章

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序