make 기반 빌드를 사용하는 경우 Makefile에 넣을 수 있습니다.
GIT_VERSION := "$(shell git describe --abbrev=4 --dirty --always --tags)"
( 스위치의 기능 은 man git describe 참조 )
그런 다음 CFLAGS에 다음을 추가하십시오.
-DVERSION=\"$(GIT_VERSION)\"
그런 다음 #define처럼 프로그램에서 직접 버전을 참조 할 수 있습니다.
printf("Version: %s\n", VERSION);
기본적으로 이것은 축약 된 git commit id를 인쇄하지만 선택적으로 특정 릴리스에 다음과 같은 태그를 지정할 수 있습니다.
git tag -a v1.1 -m "Release v1.1"
그러면 다음과 같이 인쇄됩니다.
Version: v1.1-2-g766d
즉, "766d"로 시작하는 git commit id로 v1.1 이전에 2 번 커밋됩니다.
트리에 커밋되지 않은 변경 사항이 있으면 "-dirty"를 추가합니다.
종속성 검사가 없으므로 make clean
버전을 강제로 업데이트 하려면 명시 적으로 수행해야합니다 . 그러나 이것은 해결할 수 있습니다 .
장점은 간단하고 perl 또는 awk와 같은 추가 빌드 종속성이 필요하지 않다는 것입니다. 이 접근 방식을 GNU automake 및 Android NDK 빌드와 함께 사용했습니다.