2011-05-26 160 views
17

我想過濾掉包含特定字符的字符串,但它不起作用。我猜make不支持多個%模式?Makefile:過濾掉包含字符的字符串

.PHONY: test 
test: 
    echo $(filter-out %g%, seven eight nine ten) 

給出:

$ make test 
echo seven eight nine ten 
seven eight nine ten 

它不會過濾掉 「八」?其實我想要做的是從包含「$」的文件名列表中過濾掉。 (在Java環境下)

任何希望,還是必須使用$(shell)

謝謝。

+0

我不能看到使自己做的任何方式。 – 2011-05-26 21:16:14

+5

正如文檔所述,只有第一個'%'字符是通配符 - 隨後的'%'字符與您匹配的任何字符%字符匹配。所以你的命令過濾掉以'g%' – 2011-05-26 22:26:57

回答

22

以下功能是否符合要求?

FILTER_OUT = $(foreach v,$(2),$(if $(findstring $(1),$(v)),,$(v))) 
$(call FILTER_OUT,g, seven eight nine ten) 
+0

哇爲結尾的名字。謝謝!以前從未使用過這些功能。 – Steve 2011-05-26 22:29:34

+0

很高興幫助:-) – 2011-05-26 22:56:01

+0

確保模式沒有多餘的空格:',pat,'和',pat''有**方式**不同。 – 0x6adb015 2016-12-01 14:32:31

7

我最近做類似的東西使用兩個wildcards功能排除某些文件