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
Комментариев нет:
Отправить комментарий