Makefile负通配符

Makefile负通配符,makefile,Makefile,我使用Makefile中的通配符来选择所有以.c后缀结尾的文件。这看起来像是SRCS:=$(通配符*.c)。在Makefile的其他部分中,使用了SRCS 我现在需要做的是防止在SRCS变量中包含给定的文件。我发现的方法是将shell指令与一些控制台命令结合起来:SRC:=$(shell find.-name“*.c”| grep-v”file_to_exclude.c”| xargs) 这很好,但我想知道是否还有比只使用通配符更优雅的方法。您可以使用$(filter out p,T)命令 SR

我使用Makefile中的通配符来选择所有以.c后缀结尾的文件。这看起来像是
SRCS:=$(通配符*.c)
。在Makefile的其他部分中,使用了
SRCS

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

这很好,但我想知道是否还有比只使用通配符更优雅的方法。

您可以使用$(filter out p,T)命令

SRCS := $(filter-out icky-file.c,$(wildcard *.c))
当然,使用shell脚本几乎可以将事情提升到另一个层次,因为这样您就不受Make命令的约束

有一大堆不需要的东西吗

NOWANTS := one.c two.c three.c
SRCS := $(filter-out $(NOWANTS),$(wildcard *.c))
您可以使用$(过滤掉p,T)命令

SRCS := $(filter-out icky-file.c,$(wildcard *.c))
当然,使用shell脚本几乎可以将事情提升到另一个层次,因为这样您就不受Make命令的约束

有一大堆不需要的东西吗

NOWANTS := one.c two.c three.c
SRCS := $(filter-out $(NOWANTS),$(wildcard *.c))

在Linux上,安装
makedoc
,然后查看
/usr/share/doc/makedoc
中的完整文档。或在Linux上,安装
makedoc
,然后查看
/usr/share/doc/makedoc
中的完整文档。或