如何用GNUMake的通配符函数排除特定的文件?

我的项目的目录结构如下所示:

在这里输入图像说明

我的Makefile如下所示:

dir1_contents := $(wildcard dir1/*) dir3_contents := $(wildcard dir3/*) all: clean_dir1 clean_dir3 clean_dir1: echo 'dir1_contents = $(dir1_contents)' clean_dir3: echo 'dir3_contents = $(dir3_contents)' 

当我运行make时,这是我得到的:

 $ pwd make-test $ make -s dir1_contents = dir1/dir2 dir1/file2.junk dir1/file3.junk dir3_contents = dir3/file4.junk 

我想在dir1_contents获取dir1的内容。 但我想从该列表中排除file3.junk 。 我该怎么做?

也许我应该使用grep -v ? 但我不确定这是最好的方法。 有一个内置的GNUMakefunction,我可以在这里使用?

使用$(filter-out 图案文字 ) 文字功能

  $(filter-out file3.junk,${dir1_contents}) 

(有人建议使用%/file3.junk而不是file3.junk ,但我相信你不需要这个;我让你去实验)