使用$(notdir ...)处理makefile中的文件列表

时间:2015-12-09 18:34:07

标签: makefile gnu

我想将'notdir'函数应用于我从通配符匹配中获取的文件列表。虽然'$(notdir $(通配符dir / * .tst))'有效,但我无法首先将列表存储在变量(下面的Makefile中的'FILES')中,然后由$处理(notdir ... )。直接使用变量('$(notdir $(FILES))')导致返回通配符,使用value('$(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))),但这会导致“缺少分隔符”错误。

我在这里缺少什么?我原本以为这个价值会起作用......

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

FILES := $(wildcard dir/*.tst)
NAMES := $(notdir ${FILES})