Makefile 可以通过工具如 gcc 的-M或-MM选项、makedepend 工具或 CMake 等自动生成头文件依赖。这些工具会检查源文件并输出头文件的依赖关系,这样在源文件或头文件更新时,只需重新编译影响的部分即可。使用 gcc 的-M或-MM选项时,通常是在 Makefile 的编译规则中加入这些选项,来生成包含依赖关系的.d文件,并将它...
我们知道通过gcc能够获得一个源文件对其他依赖文件的列表,gcc的这个功能其实就是为make所准备的。使用gcc的-MM选项并且结合sed命令后输出结果如下:(使用sed命令进行替换的目录是为了在目标名前加上“objs/”前缀) gcc -MM foo.c | sed 's,\(.*\)\.o[ :]*, objs/\1.o: ,g' gcc还有另一个非常有用...
files without updating the ‘Makefile’ to match.) 例如1: gcc-c-MM-MDmain.c 生成的 main.d 文件内容如下: main.o: main.c defs.h 例如1: gcc-c-MM-MDmain.c-MP生成的 main.d 文件内容如下: main.o: main.c defs.h defs.h://该选项会生成该伪目标,其没有任何依赖项,若不使用 '-MP'...
#我们现在希望当修改一个.h时,也能够让make自动重新编译我们的项目,所以,我们需要指明让.o依赖于.h文件 #那一个.o依赖于哪些.h文件,我们可以用“gcc -MM c程序文件名” 来获得这些依赖信息并重定向保存到.d文件中 #.d文件中的内容可能形如:nginx.o: nginx.c ngx_func.h #%.d:%.c $(DEP_DIR)/%....
-MM 生成文件的依赖关系,和 -M 类似,但不包含标准库的头文件 例如:gcc -MM main.c 则在终端上输出如下: main.o: main.c defs.h -MG 要求把缺失的头文件按存在对待,并且假定他们和源程序文件在同一目录下.必须和 ‘-M’ 选项一起用. -MF File ...
gcc -MM main.c 1 则在终端上输出如下: main.o: main.c defs.h 1 -MG 要求把缺失的头文件按存在对待,并且假定他们和源文件在同一目录下,必须和 ‘-M’ 选项一起用。 -MF File 当使用了 “-M” 或者 “-MM” 选项时,则把依赖关系写入名为 “File” 的文件中。若同时也使用了 “-MD” 或“-MM...
gcc -MM main.c 输出为: main.o : main.c defs.h GNU 组织建议把编译器为每一个源文件的自动生成的依赖关系放到一个文件中,为每 一个“name.c”的文件都生成一个“name.d”的 Makefile 文件,[.d]文件中就存放对应[.c] 文件的依赖关系。于是,我们可以写出[.c]文件和[.d]文件的依赖关系,并让 make...
使用gcc自带的-MM 选项可以导出源文件的依赖关系,如下: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 gcc -MM main.c 我们可以把导出的依赖关系保存成一个文件,然后在下次编译的时候使用Makefile的include功能包含该文件。这样就可以自实现只编译被修改文件的梦想了。。。? 代码语言:javascript 代码运行次数...
$ gcc-MMmian.c 输出: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 main.o:main.c defs.h 因此,我们借助编译器帮我们自动生成依赖关系,并包含到 Makefile 中 代码语言:javascript 代码运行次数:0 运行 AI代码解释 -include$(DEPS)$(DEPS):%.d:%.c ...
-MM 生成文件的依赖关系,和 -M 类似,但不包含标准库的头文件 例如:gcc -MM main.c 则在终端上输出如下: main.o: main.c defs.h -MG 要求把缺失的头文件按存在对待,并且假定他们和源程序文件在同一目录下.必须和 ‘-M’ 选项一起用. -MF File ...