Марка: переменные требования, которые зависят от цели
У меня есть Makefile
, который выглядит примерно так:
default: en
.PHONY: default en es
en: NUMBER=number
es: NUMBER=numero
TARGET=$(NUMBER)-word
INTERMEDIATE=$(NUMBER)-tmp
en: number
es: number
number: $(INTERMEDIATE)
touch $(TARGET)
$(INTERMEDIATE):
@echo Please provide file $(INTERMEDIATE)
@exit 1
clean:
rm *-word *-tmp
Чтобы использовать его, вы должны позвонить make en
(также по умолчанию) или make es
. На мой взгляд, этот Makefile имеет две основные функции:
- Промежуточное требование (
$(INTERMEDIATE)
) должно быть предоставлено пользователем заранее.
- Это требование является переменной, значение которой зависит от цели.
Когда я запускаю это, я получаю следующее:
$ make
Please provide file number-tmp
make: *** [-tmp] Error 1
Эта ошибка подсказывает мне, что переменные разрешаются на одну стадию слишком поздно для того, что я намереваюсь. Неправильное правило - -tmp
, подразумевая, что оно не может сказать значение $(NUMBER)
при решении, какие правила запускать. Однако оно разрешается к тому времени, когда запускается правило.
Так, как я мог заставить это работать?