Мне нужна переменная в make-файле, которую можно использовать в make-файлах subdir (стратегия рекурсивной сборки), и, наконец, использовать ее для принятия решения. Раньше я думал, что экспорт - это способ сделать это, но я не получаю желаемых результатов.
следующие мои make-файлы: -
Target.mk (common include for both Makefile.mk & Subdir.mk)
Makefile.mk
Subdir.mk
ФАЙЛ: Target.mk
export TARGET_PROPERTIES: =
ФАЙЛ: Makefile.mk
-include Target.mk
.PHONY : all
all :
$(MAKE) -C $(PWD) -f Subdir.mk all
@echo "#------------------------------------------------------------#"
@echo "Target build properties"
@echo $(TARGET_PROPERTIES)
@echo "#------------------------------------------------------------#"
ФАЙЛ: Subdir.mk
-include Target.mk
TARGET_PROPERTIES+=alpha
TARGET_PROPERTIES+=beta
$(warning $(TARGET_PROPERTIES))
all:
@echo "Subdir.mk......[OK]"
ПРОБЛЕМА -
Я хочу, чтобы TARGET_PROPERTIES обновлялся с Subdir.mk и использовал результаты в Makefile.mk
мой вывод следующий
$ make -f Makefile.mk
make -C /cygdrive/c/make_pf -f Subdir.mk all
make[1]: Entering directory `/cygdrive/c/make_pf'
Subdir.mk:8: alpha beta
Subdir.mk......[OK]
make[1]: Leaving directory `/cygdrive/c/make_pf'
#------------------------------------------------------------#
Target build properties
#------------------------------------------------------------#
в обновлениях Subdir.mk TARGET_PROPERTIE, хорошо, пока здесь.
Subdir.mk:8: alpha beta
в Makefile.mk после возврата из «Subdir.mk - all target» сбрасывается в NULL.
Не уверен, что я делаю не так
P.S. Я использую среду cygwin.