У меня есть Makefile, который начинается так:
CORE_PATH:=$(filter %/makefile_ltlibs.inc,$(MAKEFILE_LIST))
foobar:
@echo "MAKEFILE_LIST = \"$(MAKEFILE_LIST)\""
@echo "filter = \"$(filter %/makefile_ltlibs.inc,$(MAKEFILE_LIST))\""
@echo "CORE_PATH = \"$(CORE_PATH)\""
и когда я запускаю gmake foobar
, я получаю следующий вывод:
MAKEFILE_LIST = " GNUmakefile ../../matrixssl.test/crypto/Makefile ../common.mk ../core/makefiles/detect-and-rules.mk ../../matrixssl.test/crypto/makefile.inc makefile ../../matrixssl.test/crypto/makefile_ltlibs.inc"
filter = "../../matrixssl.test/crypto/makefile_ltlibs.inc"
CORE_PATH = ""
Как это возможно, что CORE_PATH
здесь пусто?!
РЕДАКТИРОВАТЬ:
Я превратил его в отдельный тестовый случай:
FILTER_LIST1 := " foo bar"
FILTER_LIST2 := " foo bar "
WORD11 := $(filter foo,$(FILTER_LIST1))
WORD12 := $(filter bar,$(FILTER_LIST1))
WORD13 := $(filter foo,"$(FILTER_LIST1) ")
WORD14 := $(filter bar,"$(FILTER_LIST1) ")
WORD21 := $(filter bar,$(FILTER_LIST2))
foobar:
@echo "FILTER_LIST1 = \"$(FILTER_LIST1)\""
@echo "FILTER_LIST2 = \"$(FILTER_LIST2)\""
@echo "WORD11 = \"$(WORD11)\""
@echo "WORD12 = \"$(WORD12)\""
@echo "WORD13 = \"$(WORD13)\""
@echo "WORD14 = \"$(WORD14)\""
@echo "WORD21 = \"$(WORD21)\""
вывод
FILTER_LIST1 = " foo bar"
FILTER_LIST2 = " foo bar "
WORD11 = "foo"
WORD12 = ""
WORD13 = "foo"
WORD14 = ""
WORD21 = "bar"
Мой вывод таков: filter
не работает для последней записи. Или я что-то не так делаю?