在C++程序中自动加入svn版本号
原创文章,欢迎阅读,如果您想转载,请在第一行醒目注明原作者和原始链接。
为了方便追查和确认软件bug等问题,给软件或者库赋予版本号是个好办法。
最简单的版本号管理是记录编译时间:
cout<<"build time:"<<__DATE__<<" "<<__TIME__<<endl;
还有一种高级的方法是使用svn版本号,还有一种是用版本号命名法。
我来分享一下在程序或者库中嵌入svn版本号的方法。
Windows平台
可以使用 SubWCRev.exe 工具,这个是乌龟svn(Tortoise svn)自带的一个版本查看工具。
如果安装了乌龟svn,他的路径在类似如下的位置:
"D:\Program Files\TortoiseSVN\bin\SubWCRev.exe"
可以用此工具自动检查代码的svn版本并生成到 .h 文件,其他用法请自己看帮助,不带任何参数就显示帮助。
1. 为了方便,把 SubWCRev.exe 考到工程目录下。
2. 创建模版文件 svnversion_template.h ,内容为 #define SVN_VERSION $WCREV$
3. 执行命令 SubWCRev.exe <工程目录> svnversion_template.h svnversion.h
这样就生成了一个版本头文件 svnversion.h ,内容为 #define SVN_VERSION 60163
现在就把svn版本号自动的定义在 .h 文件中了。
只需要在GetVersion接口中使用宏 SVN_VERSION 就可以了。
PS:大版本号应该宏定义 BIG_VER 并手工改,svn版本号可以这样自动获取。
为了省去每次手动执行 SubWCRev 的麻烦,可以把这个命令配置到vs的生成事件中去。
Linux平台
也是自动生成一个 svnversion.h 文件,不过linux更加简单,直接用脚本。
#!/bin/bash
codedir=$PWD/..
version=$(svn info $codedir|grep "的版本"|awk -F': ' '{print $2}')
if [ -z "$version" ] ; then
version=
fi
echo "#define SVN_VERSION $version" > svnversion.h
在make编译之前,先调用这个脚本就搞定了。
在C++程序中自动加入svn版本号的更多相关文章
- 工具——代码中自动生成SVN版本号
本节和大家讨论一下程序集版本最后一位使用SVN版本号的自动生成方法,这里就向大家简单介绍一下.在进行自动部署的时候,经常需要用脚本获取程序的最新版本号.现在我们定义每个程序集的版本信息的最末段表示SV ...
- 在打包程序中自动安装SQL Server数据库 .
原文:在打包程序中自动安装SQL Server数据库 . 1.创建安装项目“Setup1”安装项目 在“文件”菜单上指向“添加项目”,然后选择“新建项目”. 在“添加新项目”对话框中,选择“项目类型” ...
- spring boot 发布自动生成svn版本号
通过Jenkins构建发布spring boot项目时,常常有需求,需要把Svn的版本号更新到项目的版本上,通过有两种解决方案: 1. 通过shell命令对配置文件中的指定字符进行替换, 如: 配置文 ...
- windows系统下,在C#程序中自动安装字体
在Windows系统中,原有自带的字体样式有限,有时候我们的程序会使用到个别稀有或系统不自带的字体.因此我们需要将字体打包到程序中,当程序启动时,检测系统是否有该字体,如果没有则安装该字体,也可以动态 ...
- c++代码中,使用svn版本号作为程序版本号的实现方法
1.编写版本模板文件 #ifndef _VERSIONSVN_H_#define _VERSIONSVN_H_#define VER_REVISIONSVN $WCREV$#endif //!_VER ...
- 自己主动化的在程序中显示SVN版本号
有时候会有这种情况,策划拿着应用过来提一个bug,但我们却不好确定策划的手机上装的应用相应的是那个代码版本号. 为了解决问题.我们希望能在应用上显示出当前应用所相应的代码版本号,即svn版本号. 构想 ...
- VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中
在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主版本.次版本.内部版本.修改版本四个部分组成,我们获取的SVN版本就作为修改版本即可. ...
- Android Gradle实用技巧——APK文件名中加上SVN版本号,日期等
有时候,我们会希望能把APK文件名上带上打包日期,打包时svn的版本号,应用版本号等.当然这些也可以手动添加,但是手动的话也未免太不优雅了,而且可能会出错. 利用Gradle,我们可以让打包出来的ap ...
- 利用ant脚本 自动构建svn增量/全量 系统程序升级包【转】
引文:我们公司是做自己使用产品,迭代更新周期短,每次都花费较多时间和精力打包做增量更新,发现了一篇文章用于 自动构建svn增量/全量 系统程序升级包,收藏之,希望可以通过学习,更加简化我们的工作. 文 ...
随机推荐
- 弹性布局(Flex布局)整理
一. 弹性布局 一个好的网站都有让用户看上去很舒服的布局,一个网站的布局也会或多或少影响到它的浏览量,看完阮大神的博客,就想把弹性布局整理一下. 在平时的我们常用的布局类型有以下几种: 1.浮动+定 ...
- php环境和使用方法
下载好所需要的软件 (含phpmywind phpstudy navicat for my sql ) 如果Navicat 的试用期过期,请使用通杀navicat 的通杀Navica11_2-XX ...
- Redis无法启动
我的原因是:没有足够的可用空间 以往双击redis-server.exe就可以启动,但突然启动不了,只是弹出控制台一闪而过,之后就自动关闭了, 因为没看到具体错误,百度了下关键字”Redis无法启动“ ...
- 移动Web端资源整合
meta篇 viewreport 视窗宽度 <meta name="viewport" content="width=device-width,initial-sc ...
- zombodb 得分以及高光
得分以及高光在搜索引擎中有很重要的作用 得分zdb.score 使用方法 zdb.score(tid) 参考示例 SELECT zdb.score(ctid), * FROM products WHE ...
- 支付宝 生活号 获取 userId 和 生活号支付
第一:申请生活号. 第二:激活开发者 模式 ,并且上创 自己的 公钥 ( 支付宝 demo 里面有 ) 第三: 配置 回调地址 ( 用于前端 调用获取 auth_code 的时候 填写的回调地址,支 ...
- 十八、springcloud(四)熔断器
1.熔断器(Hystrix) a.断路器机制 断路器很好理解, 当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直 ...
- Zookeeper的下载、安装和启动
一.下载Zookeeper 版本 zookeeper-3.4.13 下载地址:https://archive.apache.org/dist/zookeeper/ 解压后放在/usr/local/zo ...
- Property referenced in indexed property path is neither an array nor a List nor a Map
记一次传参请求报错,没有解决 Invalid property 'distributeCars[0][ackStatus]' of bean class [com.api6.plate.prototy ...
- git项目提交后执行添加忽略操作
需要删除文件暂存区中的忽略文件 git rm -r --cached 需要忽略的已提交文件或文件夹 eg: git rm -r --cached target/