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

  • 相关阅读:
    .Net加密保护工具分析介绍
    正则表达式
    easyui datagrid toolbar 添加搜索框
    为jQuery-easyui的tab组件添加右键菜单功能
    苹果系统无法启动的解决步骤
    解决MVC4发布在IIS7后,路径无法访问.apk文件的解决方法
    C#微信公众平台开发者模式开启代码
    ios svn无法连接xp或者win7系统svn的解决方法
    SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败解决方案
    easyui textarea回车导致datagrid 数据无法展示的问题
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/2960210.html
Copyright © 2011-2022 走看看