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

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

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博客

使用资源文件

相关文章:

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

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

工厂模式+策略模式完成多种登录模式的实现

前提 (简单工厂不属于设计模式,而是一种编程思想【抽象一层出来】)工厂方法模式、抽象工厂模式 以上都是为了解耦,如果考虑多个纬度(如需要同时考虑多种电器,多种品牌)则优先考虑抽象工厂。 …...

赋能企业数字化转型 - 易点易动固定资产系统与飞书实现协同管理

在当前瞬息万变的商业环境下,企业如何借助信息化手段提升管理效率,已经成为摆在各行各业面前的紧迫课题。作为企业数字化转型的重要一环,固定资产管理的信息化建设更是不容忽视。 易点易动作为国内领先的企业资产管理服务商,凭借其全方位的固定资产管理解决方案,助力众多企业实…...

Sectigo 通配符SSL证书的优势分析!

Sectigo 通配符证书是一种专为需要保护同一主域名下的多个子域名而设计的安全解决方案。以下是Sectigo通配符证书的主要优势和特点: 1. 域名灵活性:使用通配符(*)符号,一张Sectigo通配符证书即可覆盖一个主域名及其所有…...

nuxt2路由,以及重构以前项目,路由使用

Nuxt.js根据pages目录结构自动生成vue-router模块的路由配置。 配置生成的路由可在.nuxt文件下的router.js文件中查看到,如: export const routerOptions {mode: history,base: /,linkActiveClass: nuxt-link-active,linkExactActiveClass: nuxt-link…...

eureka报错:链接8761被拒绝

eureka报错:链接8761被拒绝 来龙去脉 在idea环境中运行没有问题 我的配置是: server: port: 8001 spring: application: name: registry-server eureka: instance: hostname: localhost client: fetch-registry: false register-with-eureka: false …...

Linux 手动部署JDK21 环境

1、下载包(我下载的是tar) https://www.oracle.com/cn/java/technologies/downloads/#java21 完成后进行上传 2、检查已有JDK,并删除(我原有是jdk8) rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps3、清理掉 profile中的j…...

【c2】编译预处理,gdb,makefile,文件,多线程,动静态库

文章目录 1.编译预处理:C源程序 - 编译预处理【#开头指令和特殊符号进行处理,删除程序中注释和多余空白行】- 编译2.gdb调试:多进/线程中无法用3.makefile文件:make是一个解释makefile中指令的命令工具4.文件:fprint/f…...

c++结构体用构造函数进行初始化

结构体能自由组装数据,是一种很常见的数据打包方法。 当我们定义一个结构体后,没有初始化就使用,就会使用到垃圾数据,而且这种错误很难发现。 在编程时对于定义的任何变量,我们最好都先初始化。 常见的操作是每定义…...

2024年五一数学建模C题完整解题思路代码

2024年第二十一届五一数学建模竞赛题目 C题 煤矿深部开采冲击地压危险预测 煤炭是中国的主要能源和重要的工业原料。然而,随着开采深度的增加,地应力增大,井下煤岩动力灾害风险越来越大,严重影响着煤矿的安全高效开采。在各类深…...

0018__GTK+:GTK+的简介、安装、使用方法之详细攻略

GTK:GTK的简介、安装、使用方法之详细攻略-CSDN博客...

环保访谈|浙江双视专注红外机器视觉及智能化应用,保障安全生产

近期,中联环保圈希姐采访了浙江双视科技股份有限公司环保行业销售总监孙波,深入了解了双视科技的发展历程、产品和解决方案、合作流程、核心竞争力以及未来规划。 双视于2014年创立,专注于红外机器视觉、人工智能技术与应用开发,…...

​Web服务器

代码: WebServer 介绍 HTTP层 POST请求一般会包含Content-Length字段, 告诉服务器请求主体的长度GET请求一般不会包含Content-Length字段, 它一般不含请求正文POST响应: Content-Type字段, 根据请求资源的后缀填写 编写 1.读取请求与分析请求 2.根据不同请求方法构建不同的响…...

linux的firmware和hal层

linux的firmware和hal层 在Linux中,固件(firmware)和硬件抽象层(Hardware Abstraction Layer,HAL)是两个不同的概念。固件是运行在硬件设备上的程序,它们通常被用来控制硬件的操作。而HAL是一种…...

从ETL与ELT谈起,理解数仓的任务

最近有个朋友,有几十 PB 的异构数据,数据源包括 MySQL、DB2、Oracle、CSV、磁带机,等等,然后他需要把这些数据中的一些信息做关联整合,从这几十 PB 的数据中提取出若干业务字段到数据仓库,做统一分析。 数…...

esp32-cam 2. python opencv 拉取摄像头内容

0. 环境 - win10 python3 - pycharm - esp32-cam http://192.168.4.1 1. 创建工程 File -> Create Project -> -> Location: E:\Workspaces\PycharmProjects\esp32cam_opencv -> Create 2. opencv hello 2.1 添加脚本 File -> New -> Python f…...

js之遍历方法

先创建一个数组&#xff0c;然后使用for.in进行遍历&#xff0c;如下图所示sub代表下标并且遍历几次&#xff0c;arr代表数组 <script>let arr [1, 2, 3, 4, 5, 6];for (let sub in arr) {console.log(arr);}</script> 第二种方法则是for循环遍历&#xff0c;根据…...

Elementui的el-footer标签使用报错

Elementui的el-footer标签使用报错 其余标签的使用没有报错信息 el-footer的报错信息 原因: ​ 警告信息表示 Vue 不识别 <el-footer> 解决方式: 在组件中进行引入和暴露...

Ubuntu24.04安装中文输入法

Ubuntu24.04安装中文输入法 为了更好的体验&#xff0c;请访问个人博客 www.huerpu.cc:7000 一、添加中文语言支持 在安装中文输入法之前&#xff0c;首选要添加中文语言支持。选择System&#xff0c;点击Region & Language。 点击Manage Install Languages。 点击Insta…...

八股kafka(一)

目录 1、面试官&#xff1a;Kafka是如何保证消息不丢失 2、面试官&#xff1a;Kafka中消息的重复消费问题如何解决的 3、面试官&#xff1a;Kafka是如何保证消费的顺序性 4、面试官&#xff1a;Kafka的高可用机制有了解过嘛 5、面试官&#xff1a;解释一下复制机制中的ISR 6、面…...

SemCity: 一个应用于真实户外环境场景生成的3D Diffusion模型

论文标题&#xff1a; SemCity: Semantic Scene Generation with Triplane Diffusion 论文作者&#xff1a; Jumin Lee1, Sebin Lee1, Changho Jo, Woobin Im, Juhyeong Seon, Sung-Eui Yoon 项目地址&#xff1a;https://sglab.kaist.ac.kr/SemCity/ 前言&#xff1a; 该论…...

鸿蒙内核源码分析(互斥锁篇) | 互斥锁比自旋锁丰满多了

内核中哪些地方会用到互斥锁?看图: 图中是内核有关模块对互斥锁初始化,有文件,有内存,用消息队列等等,使用面非常的广.其实在给内核源码加注的过程中,会看到大量的自旋锁和互斥锁,它们的存在有序的保证了内核和应用程序的正常运行.是非常基础和重要的功能. 概述 自旋锁 和…...

MySQL之查询 拿下 * 。*

DQL数据查询语言 对上述的的查询操作进行代码演示&#xff08;续上一篇学生表代码进行处理&#xff09; 下面是上一篇的代码分享 下面进行简单的查询操作 字符串如果强行进行算数运算默认只为0 查询时常用的单行函数列举 未完待续...

目标检测(二阶段)领域,常见词汇

1、Backbone&#xff08;主干网络&#xff09; 定义: Backbone是目标检测模型的基础部分&#xff0c;通常是一个预训练的卷积神经网络&#xff08;如ResNet、VGG、MobileNet等&#xff09;&#xff0c;负责从输入图像中提取多层特征图。这些特征图包含了不同尺度和抽象级别的信…...

区块链与人工智能哪个更有前景?

一、引言 随着科技的飞速发展&#xff0c;区块链技术和人工智能&#xff08;AI&#xff09;无疑是两大热门领域&#xff0c;各自以其独特的魅力吸引着全球的关注。两者虽源自不同的技术基础&#xff0c;却都预示着未来技术发展的无限可能。本文旨在探讨区块链与人工智能各自的前…...

计算机网络【应用层】邮件和DNS

文章目录 电子邮件DNSDNS提供的服务&#xff1a;域名分级域名解析流程DNS资源记录DNS服务器类型 电子邮件 使用SMTP协议发送邮件之前&#xff0c;需要将二进制多媒体数据编码为ASCII码SMTP一般不使用中间邮件服务器发送邮件&#xff0c;如果收件服务器没开机&#xff0c;那么会…...

js遍历数组将数组中属性名相同的属性值组成新的数组再转化成字符串并换行(js换行和html换行不同)

{label: 告警结果,display:true, html:true,formatter:(row)>{let list ""if(row.funRes&&row.funRes.length){let propName value; list row.funRes.map(obj > {return <span style"vertical-align: text-top;padding-right: 2px;">…...

Ai绘画|如何安装使用秋叶comfyui整合包,手把手详细教程

B 站的秋叶大佬在 1 月份就已经发布了 comfy ui 的整合包。用户将压缩包下载后&#xff0c;能够一键启动 comfy ui。其便利性与之前的 webui 整合包如出一辙。然而在整合包下载完成后&#xff0c;新手或许会遭遇插件以及模型缺失的情况&#xff0c;同时也不清楚该如何运行工作流…...

【React】React-redux多组件间的状态传递

效果&#xff08;部分完整代码在最底部&#xff09;&#xff1a; 编写 Person 组件 上面的 Count 组件&#xff0c;已经在前面几篇写过了&#xff0c;也可以直接翻到最底部看 首先我们需要在 containers 文件夹下编写 Person 组件的容器组件 首先我们需要编写 index.jsx 文件…...

XSS-Labs 靶场通过解析(上)

前言 XSS-Labs靶场是一个专门用于学习和练习跨站脚本攻击&#xff08;XSS&#xff09;技术的在线平台。它提供了一系列的实验场景和演示&#xff0c;帮助安全研究人员、开发人员和安全爱好者深入了解XSS攻击的原理和防御方法。 XSS-Labs靶场的主要特点和功能包括&#xff1a;…...

洛阳做网站公司在哪/惠州seo招聘

为了回答您关于如何创建ZIP归档的具体问题(这里的其他人已经讨论过解析url)&#xff0c;我测试了您的代码。你真的离成品已经很近了。在下面是我如何增加创建Zip存档所需的内容(在本例中&#xff0c;我正在将存档写入驱动器&#xff0c;以便验证它是否正确写入)。在from zipfil…...

自动添加标签wordpress/网络营销推广方案模板

循环赛日程表问题问题描述:设有n(n 2^k)位选手参加网球循环赛&#xff0c;循环赛共进行n-1天&#xff0c;每位选手要与其他n-1位选手比赛一场&#xff0c;且每位选手每天必须比赛一场&#xff0c;不能轮空。试按此要求为比赛安排日程:(1) 每个选手必须与其他n-1个选手各赛一场…...

织梦手机网站有广告/优化网站关键词排名

离618的日子越来越近了&#xff0c;别的电视厂商都忙着卖电视冲销量&#xff0c;但总有那么一股清流格外不一样&#xff1f;近日索尼电视推出安卓8.0固件版本的升级包&#xff0c;根据第一批用户的反馈BUG还真不少&#xff01;索尼电视安卓8.0固件BUG不完全统计(小白鼠们可以进…...

有哪个网站做正品港货/百度竞价最低点击一次多少钱

信息与数据模型 建立数据库需要利用数据模型来组织数据&#xff0c;描述数据及之间的联系。为数据库建立数据模型的必经过程&#xff1a; ①深入现实世界做系统需求分析 ②用概念模型真实全面地描述现实世界中的管理对象及联系 ③用一定的方法将概念模型转换为数据模型 信…...

百度做公司网站多少钱/百度seo排名查询

1&#xff0c;对于待存储的海量数据&#xff0c;如何将它们分配到各个机器中去&#xff1f;---数据分片与路由 当数据量很大时&#xff0c;通过改善单机硬件资源的纵向扩充方式来存储数据变得越来越不适用&#xff0c;而通过增加机器数目来获得水平横向扩展的方式则越来越流行。…...

网站建设服务器价格/淘宝的关键词排名怎么查

在使用library自定义属性时&#xff0c;命名空间URI需要使用http://schemas.android.com/apk/res-auto&#xff0c;在编译时&#xff0c;URI会自动替换为当前app的package名。下面是使用support lib 的属性的例子<android.support.v4.widget.DrawerLayout android:id&quo…...