【问题标题】:How do I add revision and build date to source?如何将修订和构建日期添加到源?
【发布时间】:2010-04-23 07:48:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: git gcc date build revision


    【解决方案1】:

    我最终在我的Makefile 中使用了这样一个简单的命令:

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

    【讨论】:

      【解决方案2】:

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

      您将根据从您的 Makefile 调用的 git describe --tags 的结果创建您的过滤器脚本。

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

      然而,在“如何为 Git 存储库启用 ident 字符串?”中的 this answer 中有一个很好的 Git 关键字扩展 示例。

      【讨论】:

        猜你喜欢
        • 2012-11-29
        • 2011-12-18
        • 2021-04-19
        • 2010-10-08
        • 2013-03-20
        • 2023-02-15
        • 2011-07-10
        相关资源
        最近更新 更多