通过脚本生成关联SVN的C/C++源文件

概述

	将svn的信息通过脚本生成到C/C++文件中,然后通过使用该文件。
	好处:可以将程序的信息与svn关联起来,当出错的时候能很好的定位问题处于当前svn代码提交位置 。
	废话不多说,后期有新的理解会继续完善。
	注: 本文很多地方估计不入大佬法眼,勿喷. 欢迎留言指正。

版本命名参考

	v1.1.1(11999-201911121445) 
	v1.1.1        // 代码自己管理
	11999         // svn当前提交代码的最高版本
	剩余部分       // 日期时间(到分钟)

步骤

	1. 检索代码到本地(必须,否则后面没必要继续了)。
	2. 编写脚本(目前采用的是 .bat, LINUX、MAC下应该类似,只是脚本或脚本文件后缀不一样)。
	3. 编写模板(里面的内容可以随便写,乱七八糟都可以,你开心就好)
	4. 使用脚本生成的。

实际操作以及参考

检索代码(略)

编写脚本

subwcrev.exe . version_template.c version.c

在这里插入图片描述

模板编写

version_template.c

// 可以在这里添加一些 自定义的宏、头文件、或是提供一些接口(当然, 你可以把这些接口写到 version.h 中去)

//@brief: 获取构建版本信息,组装
const char *GetBuildVersion()
{
	return "v1.1.1(11999-201911121445)";
}

/************************************************************************/
/* SVN auto version                                                     */
/************************************************************************/
//@brief: 当前svn上的能访问的最高提交版本
const char *SvnGetRevision(void)
{
	return "$WCREV$";
}
//@brief: 当前svn能访问的最高版本号的时间
const char *SvnGetDate(void)
{
	return "$WCDATE$";
}

//@brief: 返回当前你的svn能访问的范围(这不一定对)
const char *SvnGetRange(void)
{
	return "$WCRANGE$";
}

//@brief: 检索代码的svn地址
const char *SvnGetURL(void)
{
	return "$WCURL$";
}

//@brief: 若本地有文件修改了没有提交,则 返回true, 否则返回 false
bool SvnModified(void)
{
	return  $WCMODS?true:false$;
}

执行脚本(略)

执行脚本后会有生成 version.c 文件, 内容如下
// 可以在这里添加一些 自定义的宏、头文件、或是提供一些接口(当然, 你可以把这些接口写到 version.h 中去)

//@brief: 获取构建版本信息,组装
const char *GetBuildVersion()
{
	return "v1.1.1(11999-201911121445)";
}

/************************************************************************/
/* SVN auto version                                                     */
/************************************************************************/
//@brief: 当前svn上的能访问的最高提交版本
const char *SvnGetRevision(void)
{
	return "11999";
}

//@brief: 当前svn能访问的最高版本号的时间
const char *SvnGetDate(void)
{
	return "2019/11/12 14:45:33";
}

//@brief: 返回当前你的svn能访问的范围(这不一定对)
const char *SvnGetRange(void)
{
	return "11000:11999";
}

//@brief: 检索代码的svn地址
const char *SvnGetURL(void)
{
	return "检索代码的SVN地址";
}

//@brief: 若本地有文件修改了没有提交,则 返回true, 否则返回 false
bool SvnModified(void)
{
	return  false;  
}

使用生成的文件 version.c(略)

VS里配置自动执行命令(仅供参考)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值