转载于 : http://blog.csdn.net/Stand__out/article/details/51565394
make是怎么工作的?
(1)make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 (2)如果找到,它会找文件中的第一个目标文件,在上面的例子中,他会找到“hello”这个文件,并把这个文件作为最终的目标文件。 (3)如果hello文件不存在,或是hello所依赖的后面的 .o 文件的文件修改时间要比hello这个文件新,那么,他就会执行后面所定义的命令来生 成hello这个文件,这个也就是重编译。 (4)如果hello所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。(这 有点像一个堆栈的过程) (5)当然,你的.c文件和.h文件是存在的啦,于是make会生成 .o 文件, 然后再用 .o 文件声明make的终极任务,也就是执行文件hello了。 make会一层一层去找文件的依赖关系,直到最终编译出第一个目标文件,如果过程中出现了错误(被依赖的文件找不到等),make会直接退出并报错。而对于所定义的命令的错误,或是编译不成功,make根本不理。make只管文件的依赖性,即如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,make就不工作啦。 好啦,就说这么多啦,有关make和makefile的其他内容后面会继续完善的,有很多不足的地方希望小伙伴们帮忙指正。