docs обеспечивает:.EXPORT_ALL_VARIABLES работает только тогда, когда сделал «фальшивый»
«.EXPORT_ALL_VARIABLES»
Просто упоминается как цель, это говорит „сделать“ экспортировать все переменные для ребенка по умолчанию. * Примечание. Коммуникация Переменные для подзаголовка: переменные/рекурсия.
Однако следующая Makefiles показывает, что только путем .EXPORT_ALL_VARIABLES
мишень фальшивого, тогда и только то, будет ли он иметь желаемый эффект на Makefile, т.е. экспортировать все переменные.
Makefile (версия 1) является:
ifeq "$(MAKELEVEL)" "0"
foo=bar
.DEFAULT:;
all: .EXPORT_ALL_VARIABLES
@$(MAKE)
else
all:
@echo 'foo is: $(foo)'
endif
Бег, мы получаем:
make[1]: Entering directory '/home/myname'
foo is:
make[1]: Leaving directory '/home/myname'
Makefile (версия 2) является:
ifeq "$(MAKELEVEL)" "0"
foo=bar
.DEFAULT:;
all: .EXPORT_ALL_VARIABLES
@$(MAKE)
# This line is added in THIS version.
.PHONY: .EXPORT_ALL_VARIABLES
else
all:
@echo 'foo is: $(foo)'
endif
Running, мы получаем:
make[1]: Entering directory '/home/myname'
foo is: bar
make[1]: Leaving directory '/home/myname'
Теперь единственная разница между этими двумя версиями makefile заключается в том, что во 2-й версии .EXPORT_ALL_VARIABLES
был сделан фальшивым.
Почему «фоны» необходимы для работы?