Makefile排除文件

Nik*_*ola 7 makefile substring file

我正在创建一个GNU Makefile,我有一个以下问题:

我有一个需要从源列表中排除的排除文件(和目录)列表.现在,从列表中删除列出的文件并不是一个大问题.我只是做以下事情:

NEWSRC := $(shell find $(SOURCEDIR) -name '*.c')
EXCLUDES := $(shell cat ./$(TARGET12)_exclude.txt) #TARGET12 is a Makefile parameter
CSRC := $(filter-out $(EXCLUDES),$(NEWSRC))

问题是EXCLUDES包含目录(而不是文件名),同时也应排除同一目录下的所有文件名.例如,如果EXCLUDES变量的一个成员是../sources/filesystem/SomePath,那么该目录下的所有文件也应该从CSRC中排除.例如,这些文件可能是:

../sources/filesystem/SomePath/something.c
../sources/filesystem/SomePath/src/something.c
../sources/filesystem/SomePath/Some1/src/something.c

你知道如何在Makefile中解决这个问题吗?

先感谢您!

Ise*_*ria 7

如果NEWSRC必须以元素开头 ../sources/filesystem/SomePath,如何添加后缀EXCLUDES如下?

$(filter-out $(addsuffix /%,$(EXCLUDES)),$(NEWSRC))
Run Code Online (Sandbox Code Playgroud)