在 Makefile 中,如果一个规则有多个目标,而且它们之间用空格分隔,我们称之为"多目标规则"。这意味着这个规则适用于列出的所有目标。
在目标下面的命令是“-C $@”,它通常与 make
命令关联在一起。它的作用如下:
-
-C
:这个参数告诉make
在读取 Makefiles 或执行其他操作之前,先切换到指定的目录。如果指定了多个-C
选项,那么每个选项都是相对于前一个选项解释的,例如:-C / -C etc
相当于-C /etc
。 -
$@
:这是 Makefiles 中的一个特殊变量,表示当前正在构建的目标的名称。在多目标规则的情况下,当构建时,$@
会获取每个目标的值。
所以,当执行这个规则时,make
会切换到当前目标($@
)所指定的目录,然后在那个目录里执行其他指定的命令。这在你需要为多个目标在不同目录中执行相同命令的场景下非常有用。
下面是一个 Makefile 的例子,包括一个多目标规则。在这个例子中,我们有两个目标:dir1
和 dir2
。对于这两个目标,我们将使用相同的命令(make
)在各自的目录中执行。
# Makefile 示例
# 多目标规则
dir1 dir2:
@echo "当