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 VERSIONINFO
 FILEVERSION VERSION_RC
 PRODUCTVERSION VERSION_RC
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "080404b0"
        BEGIN
            VALUE "CompanyName", COMPANY
            VALUE "FileDescription", FILE_DESCRIPTION
            VALUE "FileVersion", FILE_VERSION
            VALUE "InternalName", SOFTWARENAME
            VALUE "LegalCopyright", COPYRIGHT
            VALUE "OriginalFilename", SOFTWARENAME
            VALUE "ProductName", PRODUCTNAME
            VALUE "ProductVersion", STR_VERSION_RC
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x804, 1200
    END
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博客

使用资源文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

rust疑难杂症

rust疑难杂症解决 边碰到边记录,后续可能会逐步增加,备查 cargo build时碰到 Blocking waiting for file lock on package cache 原因是Cargo 无法获取对包缓存的文件锁, 有时vscode中项目比较多,如果其中某些库应用有问题&…

环形链表的经典问题

环形链表 环形链表的介绍链表中是否带环返回链表开始入环的第一个节点 本文主要介绍如何判断一个链表是否是环形链表,以及如何得到环形链表中的第一个节点。 环形链表的介绍 环形链表是一种链表数据结构,环形链表是某个节点的next指针指向前面的节点或指…

【linux学习指南】linux 环境搭建

文章目录 📝前言🌠 云服务器的选择🌠阿里云🌠腾讯云🌠华为云 🌠使用 XShell 远程登陆到 Linux🌉下载 XShell 🌠查看 Linux 主机 ip🌉 XShell 下的复制粘贴🌉 …

大数据信用花了,一般多久能正常?

在当今数字化时代,大数据技术被广泛应用于各个领域,包括金融、电商、社交等。然而,随着大数据技术的普及,个人信用问题也日益凸显,其中“大数据信用花”现象尤为引人关注。那么,大数据信用花究竟是什么?一…

【linuxC语言】exec函数族

文章目录 前言一、exec函数族二、示例代码2.1 代码12.2 代码22.3 代码3 总结 前言 在Linux环境下,C语言提供了一组强大的函数族,即exec函数族,用于执行其他程序。这些函数允许程序在运行时加载并执行不同的程序,从而实现了程序之…

Android(Java)项目支持Kotlin语言开发

Android(Java)项目通过相关Kotlin设置后,允许同时使用Java语言和Kotlin语言进行开发代码的。 示例环境: Android Studio Giraffe | 2022.3.1 Patch 3 Java 8 Kotlin 1.9.20 设置Kotlin选项: 第一步:在项…

AI大模型探索之路-训练篇9:大语言模型Transformer库-Pipeline组件实践

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…

Sentinel 控制台学习

引言 上篇文章已经讲过 SpringCloud Sentinel集成到微服务项目中,接下来我们继续学习怎么使用sentinel控制台对微服务进行限流,熔断,降级等一系列操作。 控制台 接下来我们单独讲解每一个菜单按钮 实时监控 实时监控: 可以看到…

必应广告投放怎么做?怎么开户推广?

今天搜索引擎广告依旧是企业提升品牌知名度、吸引潜在客户的关键渠道之一,必应Bing,作为全球第二大搜索引擎,不仅拥有庞大的用户基础,更以其精准的定向能力和高效的转化效率,成为众多企业拓展市场的优选平台。 一、必…

【Java探索之旅】包管理精粹 Java中包的概念与实践

文章目录 📑前言一、封装1.1 封装的概念1.2 访问限定修饰符 二、封装扩展(包)2.1 包的概念2.2 带入包中的类2.3 自定义包2.4 常见的包 🌤️全篇总结 📑前言 在Java编程中,封装是面向对象编程的核心概念之一…

PotatoPie 4.0 实验教程(32) —— FPGA实现摄像头图像浮雕效果

什么是浮雕效果? 浮雕效果是一种图像处理技术,用于将图像转换为看起来像浮雕一样的效果,给人一种凸起或凹陷的立体感觉,下面第二张图就是图像处理实现浮雕效果。 不过这个图是用Adobe公司的PS人工P图实现的,效果比较…

【R语言数据分析】数据类型与数据结构

R的数据类型有数值型num,字符型chr,逻辑型logi等等。 R最常处理的数据结构是:向量,数据框,矩阵,列表。 向量有数值型向量,字符型向量,逻辑型向量等,字符型向量就是反应…

二维码门楼牌管理应用平台建设:实现用户权限的高效管理

文章目录 前言一、用户权限管理的重要性二、用户管理中心的构建三、用户权限管理的实施策略四、用户权限管理的挑战与应对五、结语 前言 随着信息技术的飞速发展,二维码门楼牌管理应用平台已成为城市管理的重要组成部分。本文将深入探讨如何通过用户权限管理&#…

基于SpringBoot+Vue外卖系统设计和实现(源码+LW+部署讲解)

🌹作者简介:✌全网粉丝10W,csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 🌹 主要…

STM32(c语言基础)

1.硬件部分:按键,传感器 传感器模块:光敏电阻,热敏电阻,红外接收管 光敏电阻:光线越强,光敏电阻的阻值就越小; 热敏电阻:温度越高,热敏电阻的阻值越小&…

Vitis HLS 学习笔记--AXI4 主接口

目录 1. 简介 2. 认识MAXI 3. MAXI突发操作 3.1 全局/本地存储器 3.2 MAXI优势与特点 3.3 查看MAXI报告 3.3.1 HW Interfaces 3.3.2 M_AXI Burst Information 3.4 MAXI 资源消耗 4. 理解 Volatile 4.1 标准C/C中的 volatile 4.2 HLS 中的 volatile 5. 总结 1. 简介…

Blog图床

img avatar Audrey.webp icon.png personal.webp

labview强制转换的一个坑

32位整形强制转换成枚举的结果如何? 你以为的结果是 实际上的结果是 仔细看,枚举的数据类型是U16,"1"的数据类型是U32,所以转换产生了不可预期的结果。所以使用强制转换时一定要保证两个数据类型一致,否则…

深入理解多层感知机MLP

1. 基础理论 神经网络基础: 目标:了解神经网络的结构,包括神经元、权重、偏置和激活函数。 神经网络是由多个层次的神经元组成的网络,它模拟了人脑处理信息的方式。每个神经元可以接收输入、处理输入并生成输出。这一过程涉及到…

【学习AI-相关路程-工具使用-NVIDIA SDK MANAGER==NVIDIA-jetson刷机工具安装使用 】

【学习AI-相关路程-工具使用-NVIDIA SDK manager-NVIDIA-jetson刷机工具安装使用 】 1、前言2、环境配置3、知识点了解(1)jetson 系列硬件了解(2)以下大致罗列jetson系列1. Jetson Nano2. Jetson TX23. Jetson Xavier NX4. Jetson…