24

我有一个文件名列表:

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对应的,但是suffix精确提取扩展的函数没有notsuffix对应的

4

1 回答 1

42

很简单,就是:

NAMES = $(basename $(FILES))

请参阅 GNU make 手册中有关文件名函数的部分

于 2013-05-27T15:42:48.620 回答