svnversion

一个程序的版本号信息应该包含以下信息:
①程序的大版本,如5.2,5.3等
②程序代码的SVN版本,如13080
③程序的编译时间,如Build2011/06/30 11:43:14

在linux下,获取这些信息的方法有:
①程序大版本在代码中作为常量写入
②svn版本号可以在源代码目录下执行 svn info,返回的字符创中带有版本号信息,
利用linux下的awk程序将版本号字符串提取出来
③利用date=$(date '+(Build%Y/%m/%d %H:%M:%S)')命令,得到格式化的时间字符串

具体实现过程如下:
1.在源码中需要返回程序版本号的地方写下类似下面的代码:
return "V5.3.0.xxx";

2.建立一个批处理文件mk.sh,内容如下:
#!/bin/bash
#文件名
FILE=http://www.cnblogs.com/../src/NetManager.cpp
#源代码目录
SRC=http://www.cnblogs.com/../src/
version=$(svn info $SRC | grep 版本: | awk '{print $2}' |head -n 1)
date=$(date '+(Build%Y/%m/%d %H:%M:%S)')
sed -e "s!5.3.0.*!5.3.0.$version$date\";!" $FILE -i
make

3.将修改后的的mk.sh放到MakeFile文件同级目录下

4.编译的时候该用./mk.sh而不是make命令
则生成类似于 V5.3.0.13080(Build2011/06/30 11:43:14) 的版本号。
原文地址:https://www.cnblogs.com/xianqingzh/p/2722657.html