20180411 makefile学习笔记-makefile介绍(makefile的规则)
makefile的感性认识:
make命令执行时,需要一个makefile文件,以告诉make命令需要怎样的去编译和链接程序;
eg:工程中有8个C文件和3个头文件,我们要编写一个Makefile来告诉make命令如何编译和链接这几个文件,我们的规则是:
(1)若这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
(2)若这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
(3)若这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
只要我们的Makefile写的够好,所有的这一切,我们只用一个make命令就可以完成。
一、makefile的规则
下面是makefile的粗略规则:
target...: prerequisites...
command
...
...
target也就是目标文件,可以是Object File,也可以是执行文件还可以是一个标签(Label),对于标签这种特性,在后续的“伪代码”文章中会有叙述。
prerequisites就是,要生成的那个target所需要的文件或目标。
command也就是马克需要执行的命令(任意的Shell命令)。
这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生产规则定义在command中,说白一点就是:prerequisites中若有一个以上的文件比target文件新的话,command所定义的命令就会被执行。这就是Makefile的规则。也是Makefile中最核心的内容。