当前位置:  技术问答>linux和unix

在Makefile中如何使用.d文件?

    来源: 互联网  发布时间:2016-01-04

    本文导语:  在自动生成依赖关系是要使用.d文件请问怎么使用该文件 -include $(DEPS) #DEPS是指定的.d文件的变量 当Makefile包含了.d文件之后什么也没做呀,.d文件是怎么起作用的? 如下有一个Makefile           EXECUTABLE := mushroom.exe ...

在自动生成依赖关系是要使用.d文件请问怎么使用该文件
-include $(DEPS)
#DEPS是指定的.d文件的变量
当Makefile包含了.d文件之后什么也没做呀,.d文件是怎么起作用的?
如下有一个Makefile
     
    EXECUTABLE := mushroom.exe 
    LIBS := alleg  
     
    CFLAGS := -g -Wall -O3 -m486 
    CXXFLAGS := $(CFLAGS) 
    
    RM-F = rm -f 
     
    SOURCE := $(wildcard *.c) $(wildcard *.cc)  
    OBJS := $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(SOURCE))) 
    DEPS := $(patsubst %.o,%.d,$(OBJS))  
    MISSING_DEPS := $(filter-out $(wildcard $(DEPS)),$(DEPS))  
    MISSING_DEPS_SOURCES := $(wildcard $(patsubst %.d,%.c,$(MISSING_DEPS))  
    $(patsubst %.d,%.cc,$(MISSING_DEPS))) 
    CPPFLAGS += -MD 
    .PHONY : everything deps objs clean veryclean rebuild 
     
    everything : $(EXECUTABLE) 
     
    deps : $(DEPS) 
     
    objs : $(OBJS) 
     
    clean : 
     @$(RM-F) *.o 
     @$(RM-F) *.d 
     
    veryclean: clean 
     @$(RM-F) $(EXECUTABLE) 
     
    rebuild: veryclean everything 
     
    ifneq ($(MISSING_DEPS),) 
    $(MISSING_DEPS) :  
       @$(RM-F) $(patsubst %.d,%.o,$@) 
    endif 
     
    -include $(DEPS) 
     
    $(EXECUTABLE) : $(OBJS) 
     gcc -o $(EXECUTABLE) $(OBJS) $(addprefix -l,$(LIBS))

###########################################
    deps : $(DEPS) 
     
    objs : $(OBJS)
这两句没有任何命令,是不是使用了隐含规则?
    -include $(DEPS)
只是把.d文件包含进来,这样它就能起作用吗?
还有如果我想不生成的.o .d文件放到别的文件夹里或者原文件不在当前目录下那上面两句还能好用吗?

|
.d文件里包含了目标文件的所有依赖.
比如: test.c 里包含a.h a1.h a2.h a3.h a4.h 头文件.这些都是目标文件test.o的依赖文件.
bash-2.05a$ cat test.c
#include 
#include 

#include "a.h"
#include "a1.h"
#include "a2.h"
#include "a3.h"
#include "a4.h"
bash-2.05a$ gcc -MM test.c
test.o: test.c a.h a1.h a2.h a3.h a4.h ==>自动生成依赖文件,不需要手动指定.-MM的时候不显示系统头文件.

    
 
 

您可能感兴趣的文章:

  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • makefile如何调用文件目录下的makefile
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • 关于makefile的问题。一个makefile如何生成两个可执行文件。
  • makefile文件与批处理文件
  • 关于makefile文件的问题
  • Makefile文件,是不是很重要?
  • 自动生成makefile的问题, C文件成功,但CPP文件失败,请指点.谢谢.
  • 急~~~~~ 如何用Makefile.in文件
  • 请教,Makefile目标文件要通配目录下所有C文件,如何写?
  • 高手请进:linux下使用.o文件,makefile文件的问题
  • makefile中如何把一个子文件夹中的文件一起编译了?
  • 如何在makefile文件中组织文件的层次关系??
  • 第一次写make文件,报makefile:2: *** missing separator. Stop.错,make文件只有两行
  • cpp文件如何自动生成Makefile文件
  • Linux Makefile探讨,产生的.d文件是.c文件的依赖?
  • 如何修改libnids的makefile文件,让编译生成的库文件放在本地路径
  • 自己编写一个程序编译进内核,要修改makefile文件吗?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • Makefile怎么使用root权限
  • 请教makefile的使用方法。
  • Makefile中使用echo的问题
  • Makefile中的变量先使用后定义的问题
  • 有关在makefile中使用shell函数的问题
  • 使用Vi编辑Makefile时,目标属性问题
  • makefile使用的是哪种shell,急急急
  • 寻 懂的redhat linux 下 . 使用automake和autoconf 自动生成Makefile 的 达人。
  • makefile 中eval 中的使用方法,高手请进
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • 请教根据Makefile.am自动生成Makefile的问题
  • 怎麼樣使Makefile.in生成Makefile?
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)
  • make -f makefile 时提示 Make: Must be a separator on rules line 5. Stop. 为什么,makefile 如下
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法? iis7站长之家
  • Makefile :scripts/Makefile.build:49: *** CFLAGS was changed in "/opt/zaptel-1.4.
  • makefile include的问题
  • linux中makefile大小写问题
  • makefile 问题,三个关于实例分析,一个关于makefile的思考。——————欢迎光临
  • 关于多层Makefile编译的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3