在Makefile中,如何定义通配符模式?

时间:2013-07-05 21:39:42

标签: makefile wildcard gnu-make

我的目录中有许多名称相似的文件:test1.cpp,test2.cpp,test3.cpp等。我想将所有测试文件编译成可执行文件test1,test2,test3等。它们不一定是相互联系。

CC  = clang++
CXX = clang++

INCLUDES =

CFLAGS   = -g -Wall $(INCLUDES)
CXXFLAGS = -g -Wall $(INCLUDES)

LDFLAGS = -g
LDLIBS  =

.PHONY: default
default: test1 test2

test1:

test2:

我没有指定test1,test2,而是想在这些行中使用通配符或模式匹配。我该怎么做?

1 个答案:

答案 0 :(得分:2)

David Rodgriquez有正确的想法:make有内置规则可以为您处理。但是,我建议使用makefile而不是在您的环境中设置变量,这样您就可以轻松地将构建作为另一个用户等执行环境未正确设置。您还可以使用makefile创建default目标。

这很好:

CC  = clang++
CXX = clang++

INCLUDES =

CFLAGS   = -g -Wall $(INCLUDES)
CXXFLAGS = -g -Wall $(INCLUDES)

LDFLAGS = -g
LDLIBS  =

.PHONY: default
default: $(basename $(wildcard test*.cpp))

这就是你所需要的一切!