Makefile-filter和filter-out

filter:代表中目标串中找出符合匹配规则的。

示例: 
sources := foo.c bar.c baz.s ugh.h 
foo: $(sources) 
cc $(filter %.c %.s,$(sources)) -o foo 
 
使用“$(filter %.c %.s,$(sources))”的返回值给 cc 来编译生成目标“foo”,函数返回
值为“foo.c bar.c baz.s”

filter-out:代表从目标串中过滤掉符合匹配规则的。

示例: 
objects=main1.o foo.o main2.o bar.o 
mains=main1.o main2.o 
 
$(filter-out $(mains),$(objects)) 
实现了去除变量“objects”中“mains”定义的字串(文件名)功能。它的返回值
为“foo.o bar.o”。

原文地址:https://www.cnblogs.com/Key-Ky/p/8305171.html