расширить переменную после оценки, а не присвоения - PullRequest
0 голосов
/ 04 февраля 2011

У меня проблемы с некоторыми переменными make, у меня что-то вроде этого:

SUFFIX := raw

FILENAME = name.$(SUFFIX)

...
...

#much later, in a different makefile far away:
SUFFIX := img

echo $(FILENAME)

Но FILENAME имеет исходное значение необработанного суффикса (name.raw), а не назначенное недавно значение "img".

Я что-то упустил здесь? Используя последний выпущенный gmake.

1 Ответ

0 голосов
/ 05 февраля 2011

Я не могу воспроизвести эту ошибку с серией включений; в этом есть что-то еще. Я предлагаю вам попробовать следующее и сообщить нам результаты:

@echo filename: $(FILENAME)
@echo origin: $(origin FILENAME)
@echo flavor: $(flavor FILENAME)

EDIT:
Хорошо, теперь мы знаем, что FILENAME определяется где-то просто (т.е. с :=). Поэтому попробуйте отследить цепочку включений и выяснить, где это происходит. Вот хитрость: поместите эти строки в любой интересующий вас make-файл

ifeq ($(flavor FILENAME),simple)
  $(warning FILENAME is simply defined)
endif
...