自动变量

在单个规则的上下文中,Make 自动定义了许多特殊变量。这些变量可以为 makefile 中的每个规则赋予不同的值,旨在使编写规则更简单。这些变量只能用于规则的配方部分。

变量 描述
$@ 规则目标的文件名
$% 目标成员的名称,如果规则的目标是存档
$< 第一个先决条件的文件名
$^ 所有先决条件的清单
$? 列出比目标更新的所有先决条件
$* 隐含或模式规则的词干

以下示例使用自动变量生成通用规则。这指示如何使用相同的名称从 .c 文件构造 .o 文件。由于我们不知道受影响文件的具体名称,因此我们使用 $@ 作为输出文件名称的占位符,将 $^用作先决条件列表的占位符(在本例中为输入文件列表)。

%.o: %.c
    cc -Wall $^ -c $@