Makefile中最重要的三个概念是:目标(target),依赖关系(dependency)和命令(command)。
目标(target):就是要做什么;
依赖(dependency):即完成目标所依赖的关系;
命令(command):make完成目标,所需要执行的命令。
makefile中的“\”,即反斜杠是换行的意思。
假目标采用.PHONY关键字来定义,注意必须是大写字母。
自动变量:
$@:用于表示一个规则中的目标。当一个规则中有多个目标时,$@所指的是其中任何造成规则命令被运行的目标。
$^:表示的是规则中的所有先决条件。
$<:表示的是规则中的第一个先决条件。
特殊变量:
MAKE:表示当前处理Makefile的命令名是什么;
MAKECMDGOALS:指的用户输入目标;
变量的类别:
= :递归扩展变量;
+= :简单扩展变量;
makefile常用函数:
abspath函数,其形式:$(abspath _names),将_names中的各路径名转换成绝对路径,并将转换后的结果返回。
addprefix函数,其形式:$(addprefix _prefix, _names),将名字列表_names中的每一个名字增加前缀_prefix,并将增加了前缀的名字列表返回。
addsuffix函数,其形式:$(addsuffix _suffix, _names),将名字列表_names中的每一个名字增加后缀_suffix,并将增加了后缀的名字列表返回。
filter函数,其形式:$(filter _pattern, _text),从一个名字列表_text中根据模式_pattern得到满足需要的名字列表并返回。
filter-out函数,其形式:$(filter-out _pattern,_text),从名字列表_text中根据模式_pattern过滤一部分名字,并将过滤后的列表返回。
not-dir函数,其形式:$(not-dir _names),从路径_names中获取文件名,并将文件名返回。
wildcard函数,其形式:$(wildcard_pattern),获取当前目录中满足_pattern模式的文件或目录名列表。