Обработете списък с файлове в makefile с $(notdir)

Бих искал да приложа функцията 'notdir' към списък с файлове, които получавам от съвпадение със заместващ знак. Въпреки че '$(notdir $(wildcard dir/*.tst))' работи, не успявам първо да съхраня списъка в променлива ('FILES' в Makefile по-долу), която след това се обработва от $(notdir ... ). Директното използване на променливата ('$(notdir $(FILES))') води до връщане на заместващия знак, използването на стойност ('$(notdir $(стойност $(FILES)))') води до празен резултат.

.PHONY: show

FILES := dir/*.tst
FILES2 := dir/a.tst dir/b.tst
#NAMES := $(notdir $(FILES))
NAMES1 := $(notdir $(value $(FILES)))
NAMES2 := $(notdir $(FILES2))
NAMES3 := $(notdir $(wildcard dir/*.tst))

show:
    @echo "FILES: " $(FILES)
    @echo "NAMES1: " $(NAMES1)
    @echo "NAMES2: " $(NAMES2)
    @echo "NAMES3: " $(NAMES3)

Опитах също $(notdir $(eval $$(FILES))), но това води до грешка „липсващ разделител“.

Какво ми липсва тук? Очаквах тази стойност да свърши работа...


person user52366    schedule 09.12.2015    source източник


Отговори (1)


Опитайте следното:

FILES := $(wildcard dir/*.tst)
NAMES := $(notdir ${FILES})
person Maxim Egorushkin    schedule 09.12.2015
comment
Това също не работи, получавам '*.tst' като резултат (NAMES3 е a.tst b.tst, което бих искал да имам) - person user52366; 09.12.2015
comment
Всъщност това работи, но вторият ред може да бъде опростен до NAMES := $(notdir $(FILES)). Следователно проблемът беше, че съдържанието на FILES беше генерирано. - person user52366; 09.12.2015
comment
@user52366 Прав си, notdir наистина може да вземе списък. Актуализиран. - person Maxim Egorushkin; 10.12.2015