Ответ 1
Просто, просто:
NAMES = $(basename $(FILES))
Смотрите раздел руководства GNU на Функции имен файлов
У меня есть список имен файлов:
FILES := a.b c.d e.f
и я хочу удалить расширения (суффиксы) всех слов, чтобы получить:
a c e
Каков наилучший способ сделать это?
Лучшее, что я мог придумать, было "обманывать" оболочкой:
$(shell for f in $(INS_NODIR); do echo -n "$${f%.*} "; done )
но я удивлен, что не было более "встроенного" способа сделать это только при создании встроенных функций.
вещь, которую я пробовал:
patsubst
. Кажется, что он может иметь только один шаблон, другие обрабатываются буквально, и я хотел бы сделать что-то вроде %.%, %
ищет функцию notsufix
.
Я был удивлен, что этого не существует, поскольку функция dir
имеет notdir
, но функция suffix
, которая точно извлекает расширения, не имеет notsuffix
-компонента
Просто, просто:
NAMES = $(basename $(FILES))
Смотрите раздел руководства GNU на Функции имен файлов