看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)