Я столкнулся с каким-то странным поведением при использовании Make recent (v3.81).Могу ли я сказать Make игнорировать переменные окружения?
Предположим, что я следующий Makefile:
FOOBAR = $(shell find nonexistentdirectory -iname "foobar" | tr '\n' ' ')
all:
@echo "Hi"
clean:
@echo "Hi again"
Кажется достаточно простым, верно? Примечательно, что FOOBAR
является «рекурсивно расширенной переменной», поэтому его нельзя оценивать до тех пор, пока я не обращусь к нему. Обратите внимание, что я никогда не обращаюсь к нему. Также обратите внимание, что nonexistentdirectory
не существует, как вы могли ожидать.
Теперь предположим, что я поставил FOOBAR
в оболочке, прежде чем я вызвать цель Make:
compy386$ FOOBAR="stuff" make clean
find: nonexistentdirectory: No such file or directory
Hi again
Почему FOOBAR
оцениваемого? Очевидно, что это связано с тем, что переменная определена в оболочке. Предполагаю ли я, что пользователь мог бы установить в своей оболочке переменных? Что я тут делаю?