makefile 中的 $@ 和 $< 是什么意思?

Joh*_*ith 8 make

我看到了一个 makefile,其中包含 $@ 和 $< 符号。我从未见过它们,谷歌也没有显示任何关于它们的结果。你知道这些命令的作用吗?

cuo*_*glm 17

make联机帮助页:

$@ 是:

规则目标的文件名。如果目标是存档成员,则“$@”是存档文件的名称。在具有多个目标的模式规则中(请参阅模式规则简介),“$@”是导致规则配方运行的目标的名称。

$< 是:

第一个先决条件的名称。如果目标从隐式规则中获得其配方,这将是隐式规则添加的第一个先决条件。

您可以在此处查看完整的手册。


dan*_*ann 7

举个例子:假设你有一堆 .c 文件要编译成单个程序。您可以为每个规则编写一个 make 规则,也可以为所有规则编写一个规则:

    %: %.c
            gcc -o "$@" "$<"
Run Code Online (Sandbox Code Playgroud)

这个规则意味着:如果你有一个 make 目标(比如程序)和一个具有相同基名(program.c)的 .c 文件,你可以使用 gcc 编译 .c 文件,给 -o 选项和目标名称(gcc -o program program.c)。