Makefile 可以通过工具如 gcc 的-M或-MM选项、makedepend 工具或 CMake 等自动生成头文件依赖。这些工具会检查源文件并输出头文件的依赖关系,这样在源文件或头文件更新时,只需重新编译影响的部分即可。使用 gcc 的-M或-MM选项时,通常是在 Makefile 的编译规则中加入这些选项,来生成包含依赖关系的.d文件,并将它...
从上面make的执行过程中可看出,要动态生成依赖关系,只能利用第2步读入其它Makefile的机制。那么,我们是否可以先把生成的依赖关系保存到文件,然后再把该文件的内容包含进来? 答案是Yes! 只要利用include的机制。 include关键字是用于读入其它Makefile文件。当该文件不存在时,make会寻找是否有生成它的规则,如果有,则执行...
makefile是根据依赖关系,时间戳和生成规则来判断哪些文件需要更新,但是我们通常写的生成规则并不会包含头文件,依赖关系也不会,这样如果我们更新了头文件,makefile也不会发现,也就不会更新相应的文件,同时,考虑到头文件包含关系的复杂性,我们在写依赖关系之前把所有的头文件理清楚再写进去也不现实,一个好的方式是利用...
(1)在makefile的依赖关系中用不用体现.h头文件? === 下面是我的一些认识: 头文件中定义的是接口(函数接口,文件外全局变量和宏定义),它的作用是向调用文件封装函数的实现过程。在第一次make的时候依赖关系中没有.h文件是没有关系的。所以主要讨论在修改文件的时候重新make的情况。 (一)接口 以一个类CBase的...
结果1 题目在Makefile中,若依赖关系需要包含一系列的头文件,比如,如果main.c中有一句“#include "defs.h"”,试写出建立依赖关系的语句。相关知识点: 试题来源: 解析 答:在Makefile中,建立这种依赖关系的语句是:main.o : main.c defs.h 反馈 收藏 ...
现在还有一点比较麻烦,在写main.o、stack.o和maze.o这三个目标的规则时要查看源代码,找出它们依赖于哪些头文件,这很容易出错,一是因为有的头文件包含在另一个头文件中,在写规则时很容易遗漏,二是如果以后修改源代码改变了依赖关系,很可能忘记修改Makefile的规则。为了解决这个问题,可以用gcc的-M选项自动生成目标...
全手写的做法是 每次只列自己的直接依赖 a.c: a.h a.h : b.h c.h
当然需要。在makefile中,让编译器自动生成依赖的头文件可以使用-MM参数。或者使用-I。具体为什么,你可以查询下编译原理。。
makefile自动生成依赖关系 可自动检测头文件变化 DEBUG=1 CC = gcc CXX=g++ ifeq ($(DEBUG), 1) OPTS=-O0 -g -DDEBUG endif CFLAGS = -fPIC -I$(COMPILE_DIR) -I$(vesdkdev) -I$(es_common) -I$(vesdk) -I$(vesdk)/boost-153/include -I$(vesdkproject)...
Makefile添加头文件依赖,解决CPP文件包含的头文件修改了,但CPP文件不重新编译的问题 PROJECT_SRC_DEPS:= (patsubst %.cpp, %.o.d, $(PROJECT_SRC))) PROJECT_SRC_DEPS:= (OBJECT_FILE)) g++ xxxxxxx -MD -MF @ -include $(PROJECT_SRC_DEPS)...