我正在用 C 语言开发一个程序,该程序需要包含在 git 存储库的给定分支中执行的最后一次推送的日期和时间,以便对其进行版本控制。
我知道如何从 git 获取数据并使用它生成我想要的格式的版本号。 ( https://stackoverflow.com/a/51403241/7114946 )
问题是我不知道如何将其包含在程序代码中,因为它最终需要在应用程序启动期间“printf”此信息。
我找到了预处理器宏__TIME__
和__DATE__
。我想知道是否还有其他类似的宏来包含一些给定的字符串/数据。
谢谢
编辑:我需要在编译时包含此信息,而不是在将代码上传到 git 时包含此信息。
最佳答案
您可以在命令行上定义宏:
gcc -DFOO=BAR -c prog.c
作用类似于prog.c
中的#define FOO BAR
。
您可以将其与 shell 命令插值结合起来以获取外部程序的输出:
gcc -DGIT_TIMESTAMP="\"$(git whateveryourcommandis)\"" prog.c
(转义引号是为了使宏扩展为字符串文字。)
然后 prog.c
可以执行例如:
printf("my git timestamp is %s\n", GIT_TIMESTAMP);
关于c - 根据 git 推送日期自动包含程序版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557200/