c - 根据 git 推送日期自动包含程序版本

标签 c git gcc

我正在用 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/

相关文章:

git - 从 git 中的 checkout 后 Hook 设置环境变量

git - 如何共享 git 配置?

Git:差异 "git rebase origin/branch"VS "git rebase origin branch"

c - 使用make生成c源的目标文件时如何生成依赖文件

c++11 - 未解析的 std::__cxx11::basic_string::~basic_string 和 std::allocator<char>::~allocator() 符号

c - 从控制台打印到文件

c++ - C中char到int的转换?

c - ptrace 后读取/proc/$pid/mem 时出现 IO 错误

c++ - GCC 编译器无效值错误

c - 操作系统的低级指针处理