Makefile通配符依赖

11

我想使用通配符将所有的.cpp和.cc文件包含到目标的依赖项中。

目前,我必须执行以下操作:

all: main.cpp file1.cc file2.cc
    g++ -O3 -o all main.cpp file1.cc file2.cc -I./include -L./lib

以下似乎无法正常工作:

all: %.cpp %.cc
    g++ -O3 -o $@ $^ -I./include -L./lib

我收到了一个错误:make: ***没有规则可以制定目标“%.cc”,需要“all”。停止。

2个回答

12
targets := $(wildcard *.cpp) $(wildcard *.cc)
all: $(targets)
        g++ $(targets)

这对我有用


3

"%"代表隐式模式规则,而“*”则是通配符。

targets := $(wildcard *.cpp *.c)
all: $(targets)
    g++ $(targets)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接