Настройка представляет собой Makefile со следующим содержимым (навеянным ответом https://stackoverflow.com/a/20714468/185475):
prerule: VALUE = Hello
prerule:
@echo "in prerule"
@echo ${VALUE}
record: prerule
@echo "in record"
@echo ${VALUE}
Я хотел бы определить переменную в одном правиле, которая используется как предпосылка для другого правила (или фактического набора правил). При текущей настройке создается следующий вывод:
$ make record
in prerule
Hello
in record
$
Я хотел бы получить на выходе следующее:
$ make record
in prerule
Hello
in record
Hello
$
Вы можете добавить:
$(eval VALUE := $(VALUE))
к рецепту prerule
, но имейте в виду, что он установит переменную VALUE
глобально, как только рецепт prerule
будет выполнен. Не только в контексте правила record
.
Демо:
$ cat Makefile
prerule: VALUE = Hello
prerule:
@echo "VALUE = $(VALUE) in $@"
$(eval VALUE := $(VALUE))
record: prerule
@echo "VALUE = $(VALUE) in $@"
foobar:
@echo "VALUE = $(VALUE) in $@"
$ make foobar
VALUE = in foobar
$ make foobar record
VALUE = in foobar
VALUE = Hello in prerule
VALUE = Hello in record
$ make record foobar
VALUE = Hello in prerule
VALUE = Hello in foobar
VALUE = Hello in record
Это было именно то, что мне было нужно. Спасибо!