首页 > 代码库 > 5.16 上午 专业课 口语课 linux

5.16 上午 专业课 口语课 linux

技术分享

技术分享

 

Makefile的组成部分

  Makefile包含五个东西:显示规则,隐式规则,变量定义,文件指示,注释。具体含义还是直接引用网上的版本吧| | |

 

1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。

 

2、隐式规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。

 

3、变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。

 

4、文件指示。其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。

 

5、注释。Makefile中只有行注释,和UNIXShell脚本一样,其注释是用“#”字符,这个就像C/C++中的“//”一样。如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“/#”

 

最后,还值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。

 

        

 

  这里说说规则(Rules)

 

target ... : prerequisites ...

    command

    ...

    ...

  一条规则由三部分组成,目标(target)、先决条件(prerequisites)、命令(commands)。

 

 

 

  target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。

 

  prerequisites就是,要生成那个target所需要的文件或是目标。

 

  command也就是make需要执行的命令。(任意的Shell命令)

 

  

 

  这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。

 

  说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。

 

  这就是Makefile的规则。也就是Makefile中最核心的内容。

 

 

 

Makefile的核心思想

     四个字,依赖关系

 

5.16 上午 专业课 口语课 linux