ps:代码及资料整理于 陈皓大神著:Makefile经典教程 感谢 陈皓大神一直以来所发文章对我的帮助。
makefile的功能
makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
编译过程:
编辑---编译-----链接---运行
源文件------>生成中间目标文件------->可执行文件
编译规则:
1. 如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2. 如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3. 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
Makefile的规则:
target... : prerequisites ...
command
...
…
target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。(任意的Shell命令)
这是一个文件的依赖关系,也就是说,