Обработать список файлов в makefile с помощью $(notdir)

Я хотел бы применить функцию notdir к списку файлов, которые я получаю в результате совпадения с подстановочными знаками. Хотя '$(notdir $(wildcard dir/*.tst))' работает, мне не удается сначала сохранить список в переменной ("FILES" в Makefile ниже), которая затем обрабатывается $(notdir... ). Использование переменной напрямую ('$(notdir $(FILES))') приводит к возврату подстановочного знака, использование значения ('$(notdir $(value $(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
На самом деле это работает, но 2-ю строку можно упростить до NAMES := $(notdir $(FILES)). Таким образом, проблема заключалась в том, что содержимое FILES было сгенерировано. - person user52366; 09.12.2015
comment
@ user52366 Вы правы, notdir действительно может составить список. Обновлено. - person Maxim Egorushkin; 10.12.2015