2010-04-23 62 views
13

我有一个GCC项目,并希望自动添加定义生成日期和版本号(从git)到我的来源。什么是最好的方法来做到这一点?如何添加修订版本和构建日期到源代码?

我的目标很简单,能够做这样的事情在启动时:

printf("Test app build on %s, revision %d", BUILD_DATE, REVISION) 

建筑我使用做一个简单的Makefile.inc,不autoconf的或类似的事情。

回答

7

我结束了我的Makefile使用一个简单的命令是这样的:

echo "#define GIT_REF \"`git show-ref refs/heads/master | cut -d " " -f 1 | cut -c 31-40`\"" > git_ref.h 
4

RCS关键字替换本质上不受Git支持,但可以使用gitattributes筛选器驱动程序添加:请参阅“Git equivalent of subversion's $URL$ keyword expansion”。

alt text

例如(不究竟涉及到你的问题,但足以说明总的原则):

git config filter.rcs-keyword.clean 'perl -pe "s/\\\$Date[^\\\$]*\\\$/\\\$Date\\\$/"' 
git config filter.rcs-keyword.smudge 'perl -pe "s/\\\$Date[^\\\$]*\\\$/\\\$Date: `date`\\\$/"' 

您将立足的git describe --tags从你的Makefile称为结果的过滤器脚本。

this answer提到的,涂抹/清除过滤器驱动程序不是一个完美的解决方案,并添加任何种类的元数据的直接在数据(源)“的颠覆的$ URL $关键字扩展GIT中等效”是generally a bad idea(你在“What are the basic clearcase concepts every developer should know?”中有关于它的辩论)。

可是你有this answer这样的Git 关键字扩展的一个很好的例子,“我怎么启用的Git回购的ident字符串?”。

相关问题