基本思路是在Makefile中获取git版本,然后定义一个git版本的字符串宏,然后就可以在代码中使用这个宏来获取git版本了。代码如下:
Makefile中:
#获取git版本
git_ver=$(shell git log --pretty=oneline -1 |cut -c 1-8)
#定义宏
ifneq ($(git_ver),)
CFLAGS += -DGIT_VER=\"\$(git_ver)\"
CXXFLAGS += -DGIT_VER=\"\$(git_ver)\"
endif
代码中就可以使用宏值了:
void write_git_ver_to_file(void)
{
#ifdef GIT_VER
char file_name[] = "/usr/local/git_ver.txt";
char mode[] = "w";
char buff[100] = {0};
snprintf(buff, 100, "git_ver: %s\n", GIT_VER);
cv2x_comm_write_to_file(file_name, buff, strlen(buff), mode);
#endif
}
这样,当程序在设备上运行起来后,就会将git版本写入到设备中,便于定位问题。