1

我的目录有许多名称相似的文件: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,而是想使用通配符或模式匹配或类似的东西。我该怎么做呢?

4

1 回答 1

2

David Rodgriquez 有一个正确的想法:make有内置的规则可以为你处理这个问题。但是,我建议使用 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))

这就是你所需要的!

于 2013-07-05T22:03:20.503 回答