在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增量/全量 系统程序升级包,收藏之,希望可以通过学习,更加简化我们的工作. 文 ...
随机推荐
- 前端修炼の道 | <div> 标签简介
<div> 标签是最基本的,同时也是最常用的标签. 该标签是一个双标签,出现在主体区域中,主要作为一个容器标签来使用,在 <div> 标签中可以包含除 <body> ...
- Android Studio安装时候遇到HAXM问题
之前抽风,把AS写在卸载掉了,再进行重装时候就爆炸了,一直提示下面这个错误: <一>failed to install Intel HAXM. For details, pleasse c ...
- 自动化测试-12.selenium的弹出框处理
前言 不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决. alert\confirm\prompt ...
- 神州数码OSPF基于端口认证(简单认证、MD5认证)
实验要求:掌握OSPF基于端口认证方式 拓扑如下 简单认证 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 i ...
- c程序的期望
对于C语言,我认为是我们计算机专业必须掌握的,如果C语言都不能掌握好,我认为在以后的学习中也不会学的有多好,所以,我们要把C语言尽量掌握好,也是在今后的学习中打好基础,多看书,多写一些程序运行,做一些 ...
- CentOS7 cannot find a valid baseurl for repo base
找到文件夹: cd /etc/sysconfig/network-scripts/ 然后找ifcfg 开头的文件,挨个打开 里面有下面那些代码前三行的就是,添加后面DNS两行,保持并退出,然后继续执行 ...
- linux ar命令参数及用法详解--linux建立、修改或抽取备存文件命
功能说明:建立或修改备存文件,或是从备存文件中抽取文件. 语 法:ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>] ...
- [LeetCode&Python] Problem 458. Poor Pigs
There are 1000 buckets, one and only one of them contains poison, the rest are filled with water. Th ...
- PythonStudy——格式化输入小练习
# 练习:用户输入姓名.年龄.工作.爱好 ,然后打印成以下格式# ------------ info of Egon -----------# Name : Egon# Age : 22# Sex : ...
- 在Win10 Anaconda中安装Tensorflow
有需要的朋友可以参考一下 1.安装Anaconda 下载:https://www.continuum.io/downloads,我用的是Python 3.5 下载完以后,安装. 安装完以后,打开A ...