您的位置:首页 > 其它

如何在程序中得到SVN的版本号[转]

2008-01-19 20:58 260 查看
如何在程序中得到SVN的版本号 http://www.linuxfans.org/nuke/modules.php?name=News&file=article&sid=3349 贴出者为 william.fu

william.fu写著 '软件的版本号中有一部分是Build号,下面介绍如何在程序中使用SVN库中的版本好做为Build号的方法。

基本思路:源代码中使用GCC指定的宏,make的时候给GCC指定宏BUILDNUMBER,build脚本里面给makefile传递变量定义来定义一个宏.
给make传递变量定义的方法:make "VAR=value"
GCC中进行宏定义的方法:gcc -Dmacro=define
脚 本中获得SVN库的最新版本号的方法:svn up|grep revision|awk -F' ' '{ print $3 }'|awk -F'.' '{print $1}'。有时候svn up会输出很多信息,用grep 过滤掉其他信息,只处理包含版本号的那一行。
方法一:
build.sh :
svn_ver=`svn up|grep revision|awk -F' ' '{ print $3 }'|awk -F'.' '{print $1}'`
make "DEFINES=-DBUILDNUMBER=$svn_ver" all
makefile :
$(COMPILER) $(DEFINES) ...
ver.c :
...
printf("build version is:%d",BUILDNUMBER);
...
版本号是这样传递到源代码中的:build shell->makefile->gcc->source code
运行./build.sh,程序中将会得到最新的SVN的版本号。

同事想到更加直接方法:在build脚本里面直接将#define BUILDNUMBER +版本号输出到version.h中,这样程序中便可以直接使用BUILDNUMBER这个宏了。
方法二:
build.sh :
svn_ver=`svn up|grep revision|awk -F' ' '{ print $3 }'|awk -F'.' '{print $1}'`
echo "#define BUILDNUMBER $svn_ver" >version.h
make all

ver.c :
#include "version.h"
...
printf("build version is:%d",BUILDNUMBER);
...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  #Subversion