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
初始化文件中的变量
推导隐晦规则,并分析所有规则
创建 所有的目标文件的依赖关系链
根据依赖关系,重新生成目标
执行生成命令