Window(Qt/Vs)软件添加版本信息

news/2024/5/19 11:21:46

Window(Qt/Vs)软件添加版本信息

文章目录

  • Window(Qt/Vs)软件添加版本信息
    • VS添加版本信息
      • 添加资源文件
      • 添加版本定义头
      • 自动更新版本
        • 添加批处理脚本
        • 设置生成事件
    • Qt添加版本信息
      • 添加资源文件
      • 文件信息修改
      • 自动更新版本
    • CMake添加版本信息
      • 添加资源文件
      • 自动更新版本
    • 参考

说明:

  • 这里说的版本信息是右键软件可以在信息信息中看到的相信
  • 这些都只是在Windows中的效果
  • window中基本上都是通过添加资源文件.rc实现的

VS添加版本信息

  • 测试环境:Vs2015

添加资源文件

  • 右键项目 -> 添加 -> 资源 -> 选择Version -> 新建
    在这里插入图片描述
    在这里插入图片描述

添加版本定义头

  • version.h
#pragma once#define _VAR2STR(s)			#s
#define VAR2STR(s)			_VAR2STR(s)#define VER_MAJOR			1
#define VER_MINOR			0
#define VER_REVISION		0
#define VER_BUILD			1
#define VERSION				VER_MAJOR.VER_MINOR.VER_REVISION.VER_BUILD
#define VERSION_RC			VER_MAJOR,VER_MINOR,VER_REVISION,VER_BUILD
#define STR_VERSION			VAR2STR(VERSION)
#define STR_VERSION_RC		STR_VERSION
#define COMPILE_TIME		__DATE__ " " __TIME__#define FILE_VERSION		STR_VERSION_RC
#define FILE_DESCRIPTION	"VS 自动修改软件版本号测试"
#define COMPANY				"搞不懂软件工作室"
#define PRODUCTNAME			"自动版本号测试软件"
#define SOFTWARENAME		"SoftwareVerioon.exe"
#define COPYRIGHT			"Copyright (C) 2022-2023"
  • 修改资源文件
#include "version.h"/
//
// Version
//VS_VERSION_INFO VERSIONINFOFILEVERSION VERSION_RCPRODUCTVERSION VERSION_RCFILEFLAGSMASK 0x3fL
#ifdef _DEBUGFILEFLAGS 0x1L
#elseFILEFLAGS 0x0L
#endifFILEOS 0x40004LFILETYPE 0x1LFILESUBTYPE 0x0L
BEGINBLOCK "StringFileInfo"BEGINBLOCK "080404b0"BEGINVALUE "CompanyName", COMPANYVALUE "FileDescription", FILE_DESCRIPTIONVALUE "FileVersion", FILE_VERSIONVALUE "InternalName", SOFTWARENAMEVALUE "LegalCopyright", COPYRIGHTVALUE "OriginalFilename", SOFTWARENAMEVALUE "ProductName", PRODUCTNAMEVALUE "ProductVersion", STR_VERSION_RCENDENDBLOCK "VarFileInfo"BEGINVALUE "Translation", 0x804, 1200END
END#endif    // 中文(简体,中国) resources
/

自动更新版本

添加批处理脚本
  • 未完成

  • 使用批处理脚本完成版本号增加的工作


设置生成事件
  • 右键项目 -> 配置属性 -> 生成事件 -> 后期生成事件 -> 命令行 -> 添加命令

Qt添加版本信息

  • 测试环境:Qt5.12.10、Qt5.15.2

添加资源文件

  • 只需要在.pro中添加VERSION qmake便会自动生成

    VERSION = 1.0.0
    
  • 但是如果修改资源文件每次重新构建时会重新生成一个资源文件覆盖掉以前的

  • 给出的建议是先让qmake自动生成然后,将修改好的拷贝到源文件,并在pro中添加资源文件

  • 这样做的目的是让qmake生成一个模板,当然如果已经有可直接添加

    RC_FILE += $PWD/xxx.rc
    
  • 如果使用RC_ICON添加应用图标可能会失效,推荐在RC文件中添加

    # 之前使用 RC_ICONS 添加 图标的方式可能不行
    RC_ICONS = xxxx.ico
    # 在资源文件中添加
    IDI_ICON1 ICON DISCARDABLE "xxxx.ico"
    

文件信息修改

  • 方法是通用的可以直接用vs上面的文件 rc,version.h的定义
  • 只是需要用上面的方法添加资源文件

自动更新版本

  • 未完成

CMake添加版本信息

添加资源文件

  • CMake在Windows平台依然是通过添加资源文件的方式实现

    set(RC_FILE ${PROJECT_SOURCE_DIR}/xxx.rc)    # 添加资源文件
    
  • 编译时将资源文件变量也加入其中

自动更新版本

  • 未完成

参考

VS DLL文件和EXE文件添加文件版本信息-CSDN博客

Visual studio每次build自动增加版本号 - onemuji - 博客园 (cnblogs.com)

个比较实用的VS C++版本号自增的实现方式_vscod 属性增加版本信息-CSDN博客

使用资源文件


http://www.mrgr.cn/p/43865682

相关文章

06. C语言指针

【指针】 C语言使用数据名调用数据,数据名相当于C语言的直接寻址,直接寻址只能调用固定数据,而指针是间接寻址,指针存储了另一个数据的地址,使用指针调用数据时首先取指针存储的内存地址,之后使用此地址调用数据,使用间接寻址有如下几点优势:1.统一数据的调用方式,因为…

程序员天天 CURD,怎么才能成长,职业发展的思考(2)

接着上一篇:程序员天天 CURD,怎么才能成长,职业发展思考 上一篇写到了用年限来谈程序员的发展,在 4 - 6 年这个时间段需要做的一些事情,接着写这个时间段的。 第 4、5 年时候,你可能会做一些关于基层管理工作。这个时期会遇到一些困难。 这个时期,既要编写代码,又要做基…

电脑技巧:推荐一款非常好用的媒体播放器PotPlayer

目录 一、 软件简介 二、功能介绍 2.1 格式兼容性强 2.2 高清播放与硬件加速 2.3 自定义皮肤与界面布局 2.4 多音轨切换与音效增强 2.5 字幕支持与编辑 2.6 视频截图与录像 2.7 网络流媒体播放 三、软件特色 四、使用技巧 五、总结 一、 软件简介 PotPlayer播放器 …

git 服务端

1.安装gityum install -y git 2.查看版本git --version 3.创建用户useradd gitpasswd git 4.初始化仓库git init --bare /home/git/dataCollect.git 5.将拥有者改为gitgit init --bare /home/git/dataCollect.git

如何基于surging跨网关跨语言进行缓存降级

概述surging是一款开源的微服务引擎,包含了rpc服务治理,中间件,以及多种外部协议来解决各个行业的业务问题,在日益发展的今天,业务的需求也更加复杂,单一语言也未必能抗下所有,所以在多语言行业解决方案优势情况下,那么就需要多语言的协同研发,而对于协同研发环境下,…

AtCoder Grand Contest 001

D. Arrays and Palindrome 如果两个字符要求相同就给它们连边,对于一个长度为 \(x\) 的回文串,\(x\) 是偶数会连 \(x/2\) 条边,奇数会连 \(x/2 - 0.5\) 条边。 \(a\) 和 \(b\) 两个序列总和为 \(2n\),要让 \(n\) 个字符相同至少连 \(n - 1\) 条边,也就是奇数个数超过 \(2\…

IoTDB 入门教程 问题篇②——RPC远程连接IoTDB服务器失败

文章目录 一、前文二、发现问题三、分析问题四、检查6667端口是否监听所有IP五、检查ECS云服务器的安全组是否允许六、检查Linux防火墙是否允许 一、前文 IoTDB入门教程——导读 二、发现问题 使用本地IP127.0.0.1可以连接IoTDB服务器使用远程IPxx.xx.xx.xx却连接不到。提示你…

Unity开发微信小游戏(2)分享

目录 1.概述 2.代码 3.示例 4.个人作品 1.概述 这里我们能做有两件事: 1)主动发起分享 2)监听右上角分享(...按钮,发朋友圈也在这里) API:官方文档 2.代码 1)主动发起分享&…

程序的机器级表示——Intel x86 汇编讲解

往期地址: 操作系统系列一 —— 操作系统概述操作系统系列二 —— 进程操作系统系列三 —— 编译与链接关系操作系统系列四 —— 栈与函数调用关系操作系统系列五 —— 目标文件详解操作系统系列六 —— 详细解释【静态链接】操作系统系列七 —— 装载操作系统系列…

分层图像金字塔变压器

文章来源:hierarchical-image-pyramid-transformers 2024 年 2 月 5 日 本文介绍了分层图像金字塔变换器 (HIPT),这是一种新颖的视觉变换器 (ViT) 架构,设计用于分析计算病理学中的十亿像素全幻灯片图像 (WSI)。 HIPT 利用 WSI 固有的层次结…

【Android学习】自定义文本框和输入监听

实现功能 以上代码可实现功能: 1 自定义文本框样式 2. 文本框触发形式转变 3. 文本框输入长度监听,达到最大长度关闭软键盘 4. password框触发检测phone框内容 1. drawable自定义形状 我创建了editor_focus.xml 和 editor_unfocus.xml,两者仅…

eNSP-浮动静态路由配置

ip route-static 192.168.1.0 24 192.168.3.2 preference 60 #设置路由 目标网络地址 和 下一跳地址 preference值越大 优先级越低 一、搭建拓扑结构 二、主机配置 pc1 pc2 三、配置路由器 1.AR1路由器配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入接…

旅游系列之:庐山美景

旅游系列之&#xff1a;庐山美景 一、路线二、住宿二、庐山美景 一、路线 庐山北门乘坐大巴上山&#xff0c;住在上山的酒店东线大巴游览三叠泉&#xff0c;不需要乘坐缆车&#xff0c;步行上下三叠泉即可&#xff0c;线路很短 二、住宿 长江宾馆庐山分部 二、庐山美景

windows安装ffmpeg

官网 https://ffmpeg.org/download.html这个是别人已经编译好的,不染源码还需要重新编译解压到一个目录,添加到环境变量

SpringBoot3.1.5对应新版本SpringCloud开发(2)-Eureka的负载均衡

Eureka的负载均衡 负载均衡原理负载均衡流程老版本流程介绍 当order-servic发起的请求进入Ribbon后会被LoadBalancerInterceptor负载均衡拦截器拦截,拦截器获取到请求中的服务名称,交给RibbonLoadBanlancerCient,然后RibbonLoadBanlancerCient会将服务名称当作服务id交给Dyn…

【JavaEE】线程的概念

文章目录 1、什么是线程2、进程和线程的区别3、多线程的概述4、在Java中实现多线程的方法1.继承Thread类2.实现Runnable接口3.使用匿名内部类来继承Thread类&#xff0c;实现run方法4.使用匿名内部类来实现Runnable接口&#xff0c;实现run方法5.使用 lambda表达式 1、什么是线…

i-MES生产制造管理系统-设备点检

考虑到设备的分布区域比较分散,为了方便设备管理人员进行作业,设备点检模块通过安卓版的移动 PDA 完成,在此之前我们登录进入 MES 系统,创建点检项目,包括每一个点检项目的标准值以及上下限,如下图所示: 创建完点检项目之后,我们针对不同的设备类型,定义点检方案,在…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

yum配置及仓库搭建

yum实现 YUM 是一个在 Linux 系统中用于管理软件包的工具,可以在服务器和客户端之间跨网络使用。在这种系统中,服务器上通常会存储软件包(RPM 包)和相应的元数据(repodata 文件夹中的内容)。RPM 包:这些是实际的软件包文件,它们包含了应用程序、库文件、配置文件等。这…

P3193 [HNOI2008] GT考试 题解

P3193 [HNOI2008] GT考试 题解之前学矩阵乘的时候做的题,当时因为不会\(kmp\)搜索一稀里糊涂过去了,现在填个坑。头图 是\(Logos\)!P3193 [HNOI2008] GT考试 题链:洛谷 题库 题目大意: 求有多少个长度为\(n\)的数字串的子串中不包含给出的长度为\(m\)位的串,范围 \(n &l…