2017-07-14 50 views
0
$ ls /tmp/foo 
file1.txt 

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

Makefile文件内容:的Makefile patsubst打印逗号分隔值

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

all: 
     @echo $(NUMS) 

当我执行令。

$ make 
1 5 7 

如何我让打印数字作为逗号分隔,e.g:1,5,7

+0

只是想指出,这个问题比它标记为一个更复杂一个副本:那个想用冒号替换空格的人,这个人想用逗号替换空格。逗号需要比冒号多思考,因为扩展函数时,逗号对于解析器是特殊的。科隆不是特别的。 – MadScientist

回答

2

了解有关makefile分析规则(与shell等其他语言不同)的重要事项是,在展开变量之前,先分解参数。

好消息是,这意味着你可以把你喜欢的任何特殊字符,通过“藏”是一个变量背后:

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

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