根据git push日期

时间:2018-07-27 11:41:08

标签: c git gcc

我正在用C开发一个程序,该程序需要包含git存储库中给定分支中最后一次推送的日期和时间,以便对其进行版本控制。

我知道如何从git中获取数据并使用它生成所需格式的版本号。 (https://stackoverflow.com/a/51403241/7114946

问题是我不知道如何在程序代码中包括它,因为它最终需要在应用程序启动期间“打印”此信息。

我找到了预处理器宏__TIME____DATE__。我想知道是否还有其他类似的宏来包含某些给定的字符串/数据。

谢谢

编辑:我需要在编译时添加此信息,而不是在将代码上传到git中时。

1 个答案:

答案 0 :(得分:3)

您可以在命令行上定义宏:

gcc -DFOO=BAR -c prog.c

行为类似于#define FOO BAR中的prog.c

您可以将其与shell命令插值结合使用,以在其中获取外部程序的输出:

gcc -DGIT_TIMESTAMP="\"$(git whateveryourcommandis)\"" prog.c

(使用转义引号可使宏扩展为字符串文字。)

然后prog.c可以执行以下操作:

printf("my git timestamp is %s\n", GIT_TIMESTAMP);