我有一个GCC项目,并希望自动添加定义生成日期和版本号(从git)到我的来源。什么是最好的方法来做到这一点?如何添加修订版本和构建日期到源代码?
我的目标很简单,能够做这样的事情在启动时:
printf("Test app build on %s, revision %d", BUILD_DATE, REVISION)
建筑我使用做一个简单的Makefile.inc,不autoconf的或类似的事情。
我有一个GCC项目,并希望自动添加定义生成日期和版本号(从git)到我的来源。什么是最好的方法来做到这一点?如何添加修订版本和构建日期到源代码?
我的目标很简单,能够做这样的事情在启动时:
printf("Test app build on %s, revision %d", BUILD_DATE, REVISION)
建筑我使用做一个简单的Makefile.inc,不autoconf的或类似的事情。
我结束了我的Makefile
使用一个简单的命令是这样的:
echo "#define GIT_REF \"`git show-ref refs/heads/master | cut -d " " -f 1 | cut -c 31-40`\"" > git_ref.h
RCS关键字替换本质上不受Git支持,但可以使用gitattributes
筛选器驱动程序添加:请参阅“Git equivalent of subversion's $URL$ keyword expansion”。
例如(不究竟涉及到你的问题,但足以说明总的原则):
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字符串?”。