makefile увеличивает значение аргумента при каждом целевом вызове - PullRequest
0 голосов
/ 03 августа 2020

Я создаю файл с версией, в которой я хочу автоматически увеличивать значение патча каждый раз на единицу, когда я запускаю make pr

TAG = 0.0.1


pr:
    docker build -t $(REGISTRY)/$(APP):$(TAG) .

Я хочу каждый раз, когда я запускаю make pr он увеличит число, это нормально, что только последнее число будет увеличено

Like make pr

TAG = 0.0.2

Еще через 8 раз

TAG = 0.0.10

Еще 90

TAG = 0.0.100

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Вы можете использовать переменную оболочки вместо переменной Make:

pr:
    read TAG < nnn; docker build -t $(REGISTRY)/$(APP):0.0.$$TAG; echo $$((TAG+1)) > nnn

EDIT: здесь предполагается, что файл с именем nnn изначально содержит «1».

1 голос
/ 03 августа 2020

С помощью GNU make вы можете:

TAG = 0.0.${PR}

-include .pr.mk

PR ?= 0

pr: FORCE
    @echo ${TAG}

.pr.mk:
    @rm -f $@
    @echo "PR=$$(( ${PR} + 1 ))" > $@

FORCE:
.PHONY: FORCE .pr.mk
...