1. make会在当前目录下找名字叫“Makefile”或“makefile”的⽂件。
2. 如果找到,它会找文件中的第⼀个目标文件(target),在上面的例子中,他会找到 myproc 这个文件,并把这个文件作为最终的目标文件。
3. 如果 myproc 文件不存在,或是 myproc 所依赖的后面的 myproc.o 文件的文件修改时间要比 myproc 这个文件新(可以用 touch 测试),那么,他就会执行后面所定义的命令来生成 myproc 这个文件。
4. 如果 myproc 所依赖的 myproc.o 文件不存在,那么 make 会在当前文件中找目标为 myproc.o 文件的依赖性,如果找到则再根据那⼀个规则生成 myproc.o 文件。(这有点像⼀个堆栈的过程)
5. 当然,你的C文件和H文件是存在的啦,于是 make 会生成 myproc.o 文件,然后再用 myproc.o 文件声明 make 的终极任务,也就是执行文件 hello 了。
6. 这就是整个make的依赖性,make会⼀层又⼀层地去找文件的依赖关系,直到最终编译出第⼀个目标文件。
7. 在找寻的过程中,如果出现错误,⽐如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。