Makefile 里有什么

         Makefile :显式规则、隐晦规则、变量定义、文件指示,注释

   显式规则

          makefile 明显指出,要生成的文件,文件的依赖文件,生成的命令

   隐晦规则

          make 有自动推导的功能

   变量定义

         定义一系列的变量(字符串),当执行,变量都会被扩展到相应的引用位置上

   文件指示

       一个 Makefile 中引用另一个 Makefile

      根据某些情况指定 Makefile 中的有效部分

      定义一个多行的命令

   注释

          只有行注释,注释是用‘ # ’字符

         用反斜框进行转义’ \# ‘

         Makefile 的命令,必须要以[Tab]键开始

Makefile 的文件名

   默认情况,make 命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件,并解释这个文件

   推荐用“ Makefile ”

# 用于指定特定的Makefile
make -f ...
make --file ...

引用其他Makefile

     include :包含别的 Makefile
 

# filename: Shell的文件模式(可保含路径和通配符)
include <filename>

  例子:

# 文件 file.make $(MK_ARCH) a.mk b.mk
include file.make $(MK_ARCH) *.mk

  文件没有指定 绝对路径或 相对路径,会在当前目录查找
 

# 参数所指定的目录下查找
make -I ...
make --include-dir ...

  还会在 /usr/local/bin 或 /usr/include 查找
 

# - : 出现什么错误,都不会报错继续执行
-include <filename>

环境变量 MAKEFILES

     MAKEFILES:其它的 Makefile,用空格分隔

     MAKEFILES中定义的文件发现错误,make 不会处理

     不推荐使用该环境变量

make 的工作方式

     读入所有的 Makefile

     读入 include 的其它 Makefile

     初始化文件中的变量

    推导隐晦规则,并分析所有规则

    创建 所有的目标文件的依赖关系链

    根据依赖关系,重新生成目标

    执行生成命令