如何在Visual Studio 17的ISO C项目中获取Git提交ID/分支名字符串?
在Visual Studio 17的ISO C项目中获取Git提交ID/分支名
方法1:通过Visual Studio生成前事件注入预处理器宏
利用VS的生成前事件调用Git命令,自动生成包含提交ID/分支名的头文件,C代码直接引用即可:
- 右键项目 → 属性 → 配置属性 → 生成事件 → 生成前事件 → 命令行
- 根据需求添加命令:
- 生成短提交ID的头文件:
for /f "delims=" %%i in ('git rev-parse --short HEAD') do echo #define GIT_COMMIT_ID "%%i" > $(ProjectDir)git_commit.h - 生成分支名的头文件:
for /f "delims=" %%i in ('git rev-parse --abbrev-ref HEAD') do echo #define GIT_BRANCH_NAME "%%i" > $(ProjectDir)git_branch.h
- 生成短提交ID的头文件:
- 在C代码中引用生成的头文件:
#include "git_commit.h" #include "git_branch.h" int main() { printf("当前提交ID:%s\n", GIT_COMMIT_ID); printf("当前分支名:%s\n", GIT_BRANCH_NAME); return 0; }
方法2:用批处理脚本统一生成Git信息头文件
编写一个批处理脚本(generate_git_info.bat)放在项目目录下,一次性生成包含提交ID和分支名的头文件:
@echo off for /f "delims=" %%i in ('git rev-parse --short HEAD') do set GIT_COMMIT=%%i for /f "delims=" %%i in ('git rev-parse --abbrev-ref HEAD') do set GIT_BRANCH=%%i echo #ifndef GIT_INFO_H > git_info.h echo #define GIT_INFO_H >> git_info.h echo #define GIT_COMMIT_ID "%GIT_COMMIT%" >> git_info.h echo #define GIT_BRANCH_NAME "%GIT_BRANCH%" >> git_info.h echo #endif >> git_info.h
然后在VS生成前事件中调用该脚本:call $(ProjectDir)generate_git_info.bat,C代码中直接#include "git_info.h"即可使用宏定义。
注意事项
- 确保Git已添加到系统环境变量,VS才能在生成时调用
git命令。 - 将生成的
git_commit.h/git_branch.h/git_info.h加入.gitignore,避免提交到公共仓库(每个开发者本地的Git信息不同)。 - 所有宏定义完全兼容ISO C标准,无语法兼容性问题。
内容的提问来源于stack exchange,提问作者Cedric Blancher
相关产品推荐
相关产品推荐

