Makefile:过滤掉包含字符的字符串

Ste*_*eve 23 makefile gnu-make

我正在尝试过滤掉包含特定字符的字符串,但它不起作用.我想make不支持多种%模式?

.PHONY: test
test:
    echo $(filter-out %g%, seven eight nine ten)
Run Code Online (Sandbox Code Playgroud)

得到:

$ make test
echo seven eight nine ten
seven eight nine ten
Run Code Online (Sandbox Code Playgroud)

它不过滤掉"八"?实际上我想要做的是从包含"$"的文件名列表中过滤掉.(在Java环境中.)

有希望,还是我必须使用$(shell)

谢谢.

Ise*_*ria 28

以下功能是否符合目的?

FILTER_OUT = $(foreach v,$(2),$(if $(findstring $(1),$(v)),,$(v)))
$(call FILTER_OUT,g, seven eight nine ten)
Run Code Online (Sandbox Code Playgroud)

  • 确保模式中没有多余的空格:`,pat,`和`,pat,`**是**不同的。 (2认同)

小智 11

我最近做了类似的事情,使用两个wildcards函数来排除一些文件

.PHONY: test
test:
    echo $(filter-out $(wildcard *g*.c),$(wildcard *.c))
Run Code Online (Sandbox Code Playgroud)