>假设我有一个以下生成文件:
CPPFILES := $(wildcard *.cpp)
OBJFILES := $(CPPFILES:.cpp=.o)
.PHONY: all
all: $(OBJFILES)
%.o: %.cpp
$(CXX) -c $< -o $@
现在我想添加对 *.cc 文件的支持。是否可以扩展行 %.o: %.cpp 以在一行中同时处理 *.cpp 和 *.cc 文件?我期望类似的东西:%.o:%.cpp%.cc。
你真的只是在重新发明make的内置规则,但以下内容应该有效
CCFILES := $(wildcard *.cc)
CPPFILES := $(wildcard *.cpp)
CCOBJFILES := $(CCFILES:.cc=.o)
CPPOBJFILES := $(CPPFILES:.cpp=.o)
OBJFILES := $(CCOBJFILES) $(CPPOBJFILES)
.PHONY: all
all: $(OBJFILES)
$(CCOBJFILES): %.o: %.cc
$(CPPOBJFILES): %.o: %.cpp
$(OBJFILES):
$(CXX) -c $< -o $@
使用内置规则,上述内容可以缩短为
CCFILES := $(wildcard *.cc)
CPPFILES := $(wildcard *.cpp)
.PHONY: all
all: $(CCFILES:.cc=.o) $(CPPFILES:.cpp=.o)