一种有规律多目标Makefile写法
场景:有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那里加一行即可。