2012-07-02 73 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