make与makefile
make是一个应用程序
- 根据makefile文件解析依赖关系
- 根据依赖和时间戳自动维护编译过程
- 执行宿主机上的命令
makefile是一个描述性质的文件。
- 指定一系列的规则来指导代码源文件的编译
- 拥有自己的语法,支持函数
- 能直接集成OS的各种命令
make根据makefile中的规则执行相应的动作。makefile可以类比成脚本,而make可以类比成这个脚本的解析器以及执行单元。
makefile的基本结构
makefile用来指导编译各个源文件并生成可执行程序。这里有三个要素,分别对应如下:
- 源文件 ==> 依赖 (prerequisites)
- 可执行程序 ==> 目标 (targets)
- 编译 ==> 命令 (commands)
这三个要素也就构成了一个规则,结构如下:
targets : prerequisites
command
command
前面是TAB
按键。
我们可以通过如下命令执行对应的目标
make targets
makefile的依赖规则
- 当目标对应的文件不存在, 执行对应的命令
- 依赖比目标的时间戳新,执行对应的命令
- 当依赖关系连续存在的时候,对比依赖链上的所有目标与依赖的时间戳
example
boy : hello girl
@echo "okay"
hello :
@echo "hello"
girl :
@echo "en hehe"
这里boy
依赖hello
和girl
,执行make的目录下又没有以boy、hello和girl为名字的文件。所以会执行对应的命令。