2015-02-06 212 views
5

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

目前,我必须做到以下几点:

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 [email protected] $^ -I./include -L./lib 

我得到的错误化妆:***没有规则,使目标'%.cc','all'需要。停止。

回答

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

这对我的作品

1

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

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