Makefile patsubst 打印逗号分隔值

Makefile patsubst to print comma separated values

$ ls /tmp/foo
file1.txt

$ ls /tmp/bar
file5.txt  file7.txt

Makefile 内容:

$ cat Makefile 
NUMS = $(patsubst file%,%,$(basename $(notdir $(wildcard /tmp/foo/file*.txt /tmp/bar/file*.txt))))

all:
        @echo $(NUMS)

当我执行 make.

$ make
1 5 7

如何让它以逗号分隔打印数字,例如:1,5,7 ?

了解 makefile 解析规则的重要一点是,它不同于 shell 等其他语言,make 在扩展变量之前先分解参数。

好消息是这意味着您可以通过 "hiding" 将任何您喜欢的特殊字符放在变量后面:

COMMA := ,
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)

NUMS = $(subst $(SPACE),$(COMMA),$(basename $(notdir $(wildcard /tmp/foo/file*.txt /tmp/bar/file*.txt))))