场景:有a.cpp b.cpp c.cpp….共计n个源文件,每个源文件要生成一个对应的名为a b c …的可执行文件。
Makefile示例:
CXX = g++
LIB = ../lib/source/libDs.a
INCLUDE = ../lib/include/
CFLAGS = -I$(INCLUDE)
bins = a \
b \
c
all :
for i in $(bins); do \
$(CXX) -c $(CFLAGS) $(addsuffix .cpp, $$i) -o $(addsuffix .o, $$i); \
$(CXX) -o $$i $(addsuffix .o, $$i) $(LIB); \
done
clean :
for i in $(bins); do \
rm -f $(addsuffix .o, $$i); \
rm -f $$i; \
done
主要就是利用addsuffix来处理这种有规律的匹配,再用for语句加以循环。以后每增加一个源文件,就在bins那里加一行即可。