看unp(UNIX网络编程)的时候一些小例子需要编译多个文件,顺便学了一下Makefile文件的编写。
当需要在一个Makefile文件里面生成多个可执行文件的时候遇到了困难,经过查询得到解决方案如下:
这个例子中我需要生成的是tcpserv01和tcpcli01两个可执行文件。
其中.PHONY 说明all是个“伪目标”,make不会生成“all”这个可执行文件,而是执行后面的多个目标。
1 all : tcpserv01 tcpcli01 2 .PHONY : all 3 CFLAGS = -I. 4 OBJS1 = tcpserv01.o str_echo.o 5 OBJS2 = tcpcli01.o str_cli.o 6 CXX = g++ 7 8 tcpserv01 : $(OBJS1) 9 $(CXX) -o tcpserv01 $(OBJS1) $(CFLAGS)10 11 tcpcli01 :$(OBJS2)12 $(CXX) -o tcpcli01 $(OBJS2) $(CFLAGS)13 14 $(OBJS1):%.o:%.cpp15 $(CXX) -c $< $(FLAGS) -o $@ 16 17 $(OBJS2):%.o:%.cpp18 $(CXX) -c $< $(FLAGS) -o $@19 20 .PHONY:clean21 clean:22 -$(RM) tcpserv01 tcpcli01 $(OBJS1) $(OBJS2)