Makefile
... ifeq ($(origin VER), command line) VERSION := $(VER) else VERSION := $(shell git describe --abbrev=4 --dirty --always) endif CFLAGS += -DVERSION=\"$(VERSION)\" ...И, собственно, всё. Потом в исходнике используем предопределённый уже для этого исходника макрос VERSION. Чтобы слишком умные IDE не ругались и чтобы на всякий случай компилировалось и без -DVERSION, желательно защититься через ifndef:
... #ifndef VERSION #define VERSION "unknown" #endif ... printf("%s \n", VERSION); ...Версия берётся из последнего доступного тега текущей ветки. По умолчанию git describe берёт только аннотированные теги. Если же тег не на последнем коммите в ветке, то версия будет в формате "0.1-3-g828ba", для грязных исходников версия выглядит так (см. ключ --dirty): "0.1-3-g828ba-dirty". Короче, смотреть справку по git describe. Можно задать версию из командной строки при сборке через make:
make VER=0.666
Комментариев нет:
Отправить комментарий