Makefile否定通配符

Gen*_*nís 1 makefile

我用来在Makefile中使用通配符,以便选择名称中以.c后缀结尾的所有文件.那看起来像那样SRCS := $(wildcard *.c).在Makefile的其他部分SRCS使用.

我现在需要做的是防止给定的文件包含在SRCS变量中.我发现的方法是将shell指令与一些控制台命令结合起来:SRC :=$(shell find . -name "*.c" | grep -v "file_to_exclude.c" | xargs)

这工作正常,但我想知道是否还有一些比仅使用通配符更优雅的方式.

lor*_*nix 6

你可以使用$(filter-out P,T)命令......

SRCS := $(filter-out icky-file.c,$(wildcard *.c))
Run Code Online (Sandbox Code Playgroud)

当然,使用shell脚本几乎可以把事情带到另一个层面,因为那时你不受Make的命令约束.

有一堆不想要的?

NOWANTS := one.c two.c three.c
SRCS := $(filter-out $(NOWANTS),$(wildcard *.c))
Run Code Online (Sandbox Code Playgroud)