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

  • 相关阅读:
    bzoj3687 简单题
    bzoj3992 [SDOI2015]序列统计
    bzoj4602 [Sdoi2016]齿轮
    bzoj4006 [JLOI2015]管道连接
    szoj461【四校联考0430】挑战
    bzoj4037 [HAOI2015]数字串拆分
    javascript 节点的增,删,改,查
    javascript 节点属性详解
    表单操作部分
    文档对象的操作
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/2960210.html
Copyright © 2011-2022 走看看