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

git版本生成 c++

模板

#ifndef VERSION_H
#define VERSION_H// 自动生成的版本信息,请勿手动修改
#define PROJECT_NAME        "@PROJECT_NAME@"
#define VERSION_MAJOR       @VERSION_MAJOR@
#define VERSION_MINOR       @VERSION_MINOR@
#define VERSION_PATCH       @VERSION_PATCH@
#define VERSION_BUILD       @VERSION_BUILD@#define GIT_COMMIT_HASH     "@GIT_HASH@"
#define GIT_BRANCH          "@GIT_BRANCH@"
#define BUILD_TIMESTAMP     "@BUILD_TIME@"#define VERSION_STRING      "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@.@VERSION_BUILD@"
#define FULL_VERSION_STRING "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@ (@GIT_BRANCH@ - @GIT_HASH@)"#endif // VERSION_H

脚本

#!/bin/bash# 配置基本版本号
MAJOR=1
MINOR=0
PATCH=0# 获取Git提交次数作为Build号,如果不是Git仓库则默认为0
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; thenBUILD=$(git rev-list --count HEAD)GIT_HASH=$(git rev-parse --short HEAD)GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
elseBUILD=0GIT_HASH="unknown"GIT_BRANCH="unknown"
fi# 获取当前时间
BUILD_TIME=$(date "+%Y-%m-%d %H:%M:%S")
PROJECT_NAME="MultiMediaTool"# 定义文件路径
TEMPLATE_FILE="version_template.h"
OUTPUT_FILE="MultiMediaTool/src/version.h"# 检查模板文件是否存在
if [ ! -f "$TEMPLATE_FILE" ]; thenecho "Error: $TEMPLATE_FILE not found!"exit 1
fi# 确保目标目录存在
mkdir -p $(dirname "$OUTPUT_FILE")# 使用 sed 替换模板中的占位符
sed -e "s/@PROJECT_NAME@/$PROJECT_NAME/g" \-e "s/@VERSION_MAJOR@/$MAJOR/g" \-e "s/@VERSION_MINOR@/$MINOR/g" \-e "s/@VERSION_PATCH@/$PATCH/g" \-e "s/@VERSION_BUILD@/$BUILD/g" \-e "s/@GIT_HASH@/$GIT_HASH/g" \-e "s/@GIT_BRANCH@/$GIT_BRANCH/g" \-e "s/@BUILD_TIME@/$BUILD_TIME/g" \"$TEMPLATE_FILE" > "$OUTPUT_FILE"echo "Version header generated at $OUTPUT_FILE"
echo "Version: $MAJOR.$MINOR.$PATCH.$BUILD ($GIT_HASH)"

  

http://www.jsqmd.com/news/398794/

相关文章:

  • 基于双向DC - DC变换器(DAB)的储能系统控制仿真探索
  • Google 发布 Gemini3.1Pro 模型,它在技术上有哪些亮点和突破?
  • Linux如何快速删除大量小文件
  • 学术江湖的“AI剑客”:书匠策AI如何用六大绝技破解论文写作困局
  • BarraCUDA 深度技术研究报告
  • CAN诊断实现基于UDS协议的OTA升级功能代码及资料(支持AB面升级 )。 产品包括: 1...
  • 学术江湖的“AI剑宗”:书匠策AI六大绝技重塑期刊论文写作范式
  • 学术写作新纪元:书匠策AI如何用“六维引擎”重构期刊论文创作生态
  • 一个单机架构的14次演进之路
  • 基于占空比优化的异步电机模型预测转矩控制探索
  • 如何保障消息中间件 100% 消息投递成功?如何保证消息幂等性?
  • 学术江湖的“智能剑客”:书匠策AI如何用六大绝技重塑论文写作规则
  • type、__new__与一次对对象生命周期的全面接管
  • Java 8 新特性全景指南:从入门到实战
  • 低代码写游戏:我用积木块拼出俄罗斯方块,然后在“旋转”函数前跪了一夜
  • 详解自动化安全扫描:用 OWASP ZAP 与 Nuclei 体检你的 CSP/MIME 配置
  • 大规模资产扫描性能调优:并发、流控与资源管理的实战艺术
  • 基于 Nuclei 的漏洞扫描实践:YAML 模板语法与高级工作流
  • 在 React / Vue 里安全插入动态脚本:一文读懂 nonce 的正确用法
  • vue基于python的计算机类专业考研择校推荐系统开发
  • vue基于python的高考调档线查询系统的设计与实现
  • 【算法提高篇】(七)权值线段树 + 离散化:值域爆炸?这波操作直接拿捏!
  • 纠结,有必要和领导发拜年短信吗?
  • 计算机毕业设计|基于springboot + vue社区智慧消防管理系统(源码+数据库+文档)
  • postgresql跨数据库建view
  • 物理理论终极全景图
  • 覆盖率的陷阱:100% 代码覆盖率不等于没有 Bug
  • 为什么 MySQL 不推荐默认值为 null ?
  • Text1:Vscode ESP32S3 IDF WIFI OTA升级
  • 2026别错过!深得人心的降AI率网站 —— 千笔AI