使一个Makefile同时生成多个可执行文件

时间:2021-09-15 13:47:09

看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:%.cpp
15     $(CXX) -c $< $(FLAGS) -o $@  
16 
17 $(OBJS2):%.o:%.cpp
18     $(CXX) -c $< $(FLAGS) -o $@
19 
20 .PHONY:clean
21 clean:
22     -$(RM) tcpserv01 tcpcli01 $(OBJS1) $(OBJS2)