如何向源添加修订和构建日期?

时间:2010-04-23 07:48:39

标签: git gcc date build revision

我有一个GCC项目,并希望自动将构建日期和修订号(从git)的定义添加到我的源代码中。最好的方法是什么?

我的目标很简单,就是可以在启动时做这样的事情:

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

对于构建我使用make使用简单的Makefile.inc,而不是autoconf或类似的东西。

2 个答案:

答案 0 :(得分:7)

我最终在Makefile

中使用了这样一个简单的命令
echo "#define GIT_REF \"`git show-ref refs/heads/master | cut -d " " -f 1 | cut -c 31-40`\"" > git_ref.h

答案 1 :(得分:4)

Git本身不支持RCS关键字替换,但可以添加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`\\\$/"'

您将根据Makefile中调用的git describe --tags结果生成过滤器脚本。

this answer中提到的“Git相当于subversion的$ URL $关键字扩展”,涂抹/清除过滤器驱动程序不是一个完美的解决方案,并且直接在数据中添加任何类型的元数据(源)是generally a bad idea(您在“What are the basic clearcase concepts every developer should know?”中对此进行了辩论。

然而,您在“我如何为Git repos启用识别字符串?”中的this answer中有一个很好的例子来说明这种Git 关键字扩展