При создании следующего базового make-файла поведение, которое я вижу, заставляет меня думать, что я упускаю что-то фундаментальное:
define foo
var := $1
$(info var_value: [$(var)] vs value: [$1])
endef
all:
$(eval $(call foo,FIRST))
$(eval $(call foo,SECOND))
Вывод этого make-файла следующий:
var_value: [] vs value: [FIRST]
var_value: [FIRST] vs value: [SECOND]
make: `all' is up to date.
Насколько я понимаю, var := $1
означает, что любое значение в $ 1 немедленно раскрывается и устанавливается в var.Поэтому я бы (наивно) ожидал, что содержание var и фактическое значение всегда будут равны, но это не так.Может кто-нибудь дать мне подсказку?