zoukankan      html  css  js  c++  java
  • 嵌套Makefile问题解决一例

    先看一下目录结构

     

    image

    总控Makefile如下:

       1:  CFLAGS=-Wall
       2:  CC=gcc
       3:   
       4:   
       5:  SUBDIRS=server client
       6:   
       7:  export CFLAGS CC
       8:   
       9:   
      10:   
      11:  all:$(SUBDIRS)
      12:   
      13:  $(SUBDIRS):
      14:      make -C $@
      15:   
      16:   
      17:  clean:
      18:      $(RM) server/*.o  server/server 
      19:      $(RM) client/*.o client/client
      20:  .PHONY:clean 

     

    另外两个Makefile分别如下:

       1:  server:server.o
       2:      $(CC) $(CFLAGS) $^ -o $@
       3:   
       4:  server.o:server.c
       5:      $(CC) $(CFLAGS) -c $^ -o $@

       1:  client:client.o
       2:      $(CC) $(CFLAGS) $^ -o $@
       3:   
       4:  client.o:client.c
       5:      $(CC) $(CFLAGS) -c $^ -o $@

     

    当执行总控Makefile时,出现如下现象:

    image 

    无法实现程序的编译。

     

    解决方法:

    方法一、将总控Makefile中的$(SUBDIRS)中的两个路径都声明为 伪目标。

     

       1:  CFLAGS=-Wall
       2:  CC=gcc
       3:   
       4:   
       5:  SUBDIRS=server client
       6:   
       7:  export CFLAGS CC
       8:   
       9:   
      10:   
      11:  all:$(SUBDIRS)
      12:   
      13:  $(SUBDIRS):
      14:      make -C $@
      15:   
      16:   
      17:  clean:
      18:      $(RM) server/*.o  server/server 
      19:      $(RM) client/*.o client/client
      20:  .PHONY:clean server client 

     

    再次指向make

    image

    方法二、将总控Makefile作如下修改

     

       1:  CFLAGS=-Wall
       2:  CC=gcc
       3:   
       4:   
       5:  SUBDIRS=server client
       6:   
       7:  export CFLAGS CC
       8:   
       9:   
      10:   
      11:  all:$(SUBDIRS)
      12:   
      13:  $(SUBDIRS):pp
      14:      make -C $@
      15:  pp:
      16:   
      17:  clean:
      18:      $(RM) server/*.o  server/server 
      19:      $(RM) client/*.o client/client
      20:  .PHONY:clean

     

    image

  • 相关阅读:
    Codeforces 877 C. Slava and tanks
    Codeforces 877 D. Olya and Energy Drinks
    2017 10.25 NOIP模拟赛
    2017 国庆湖南 Day1
    UVA 12113 Overlapping Squares
    学大伟业 国庆Day2
    51nod 1629 B君的圆锥
    51nod 1381 硬币游戏
    [JSOI2010]满汉全席
    学大伟业 2017 国庆 Day1
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/2960210.html
Copyright © 2011-2022 走看看