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))))
$ 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))))