2015-02-06 205 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)