2012-07-02 49 views
1

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

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

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

回答

6

可以使用$(过滤出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)) 
+0

我不知道过滤命令!谢谢。 –

+0

在Linux上,安装'make-doc',然后查看'/ usr/share/doc/make-doc'中的完整文档。或.... [在线制作文档](http://www.gnu.org/software/make/manual/make.html) – lornix