2017-07-14 91 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))))