使用 $(notdir ...) 处理 makefile 中的文件列表
Process list of files in makefile with $(notdir ...)
我想将 'notdir' 函数应用于从通配符匹配中获得的文件列表。虽然 '$(notdir $(wildcard dir/*.tst))' 有效,但我没有设法首先将列表存储在变量(下面 Makefile 中的 'FILES' )中,然后由 $(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))),但这会导致 "missing separator" 错误。
我在这里错过了什么?我原以为价值会完成这项工作...
尝试以下操作:
FILES := $(wildcard dir/*.tst)
NAMES := $(notdir ${FILES})
我想将 'notdir' 函数应用于从通配符匹配中获得的文件列表。虽然 '$(notdir $(wildcard dir/*.tst))' 有效,但我没有设法首先将列表存储在变量(下面 Makefile 中的 'FILES' )中,然后由 $(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))),但这会导致 "missing separator" 错误。
我在这里错过了什么?我原以为价值会完成这项工作...
尝试以下操作:
FILES := $(wildcard dir/*.tst)
NAMES := $(notdir ${FILES})