makefile杂文
makefile简介
gcc编译文件的基本过程
把相关文件编译成.o文件
总结: 编译:只是对一个一个文件进行编译
链接:对所有.o文件进行链接 解决了函数交叉引用的问题
如果是多个文件,如果其中的一个文件被改写了,那么进行编译的时候,就会所有的工程编译一遍,比较浪费时间。
因此提出了makefile这个命令组织文件和编译 ,如果你修改了其中一个文件,那么奖将来编译的时候就会只需要编译那一部分,和与他有关的文件编译。而不需要把所有的源文件都编译了。这一样就节约了编译时间。
makefile 是一个脚本,make程序执行的一个shell脚。一个makefile的主要包含了两大部分
1.文章的组织结构
2.指令。怎么来创建这些文件
基本含义:
main.o: main.c median.h
gcc -c main.c
main.o 是目标我们最终希望生成的东西
main.c median.h 使我们为了生成目标需要的依赖文件
gcc -c main.c 是我们为了达到目标执行命令
make 的思维过程:
由于上面的依赖关系所形成的树状图
makefile
跟新的算法: 时间戳的算法
makefile的本质是:依据你的规则,形成相关的依赖树 ,利用时间戳来来判断
///////////////////////////////////////////////////////////////////////////////////////
makefile的隐藏规则 ,模式规则,主要是相关规则的理解。重点是看make手册学会理解 (从便利性的角度来看)
常见的几种写法:
1. %.o:%c 表示任何一个.o文件都依赖于与他同名的.o文件。
%.o: %.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -O [email protected]
[email protected] 表示目标 $< 表示依赖
例如你有10目标需要这样规则,那么[email protected]分表表示第一个,第二个,第三个等等。
$< 表示任何依赖的文件
2.gcc -M crash.cpp 执行这条命令,会打印出crash.o所依赖的文件。
#include $<sources:.c=.d>包含这些所欲依赖文件