Makefile 如何在GNU make中从单词列表中删除多个不同的扩展名?
我有一个文件名列表:Makefile 如何在GNU make中从单词列表中删除多个不同的扩展名?,makefile,Makefile,我有一个文件名列表: FILES := a.b c.d e.f 我想删除所有单词的扩展名(后缀),以获得: a c e 最好的方法是什么 我能想到的最好的办法就是用shell“作弊”: $(shell for f in $(INS_NODIR); do echo -n "$${f%.*} "; done ) 但我感到惊讶的是,没有一种更为“内置”的方法只使用make内置函数来实现这一点 我试过的事情: patsubst。似乎它只能有一个通配符,其他通配符按字面意思处理,我想做一些类似.%
FILES := a.b c.d e.f
我想删除所有单词的扩展名(后缀),以获得:
a c e
最好的方法是什么
我能想到的最好的办法就是用shell“作弊”:
$(shell for f in $(INS_NODIR); do echo -n "$${f%.*} "; done )
但我感到惊讶的是,没有一种更为“内置”的方法只使用make内置函数来实现这一点
我试过的事情:
。似乎它只能有一个通配符,其他通配符按字面意思处理,我想做一些类似patsubst
.%、%%
- 正在查找
函数 我感到惊讶的是,这并不存在,因为notsufix
函数有dir
对应项,但是准确提取扩展名的notdir
函数没有后缀
对应项notsuffix
- 简单,只是:
NAMES = $(basename $(FILES))
请参阅GNU make手册中的tnx。。。我曾看过该页面,浏览了所有函数,但我认为
basename
将与POSIX实用程序做相同的事情(保留最后一个/
之后的内容),这是basename今天想到的最常见的定义思想