linux 内核 Makefile 中的 .PHONY

.PHONY in linux kernel Makefile

我从 Linux kernel.In 文件 /scripts/Makefile.build 学习 Makefile,它以

开头
PHONY := __build
__build:
#Init all relevant variables
obj-y :=
obj-m :=
lib-y :=
...

在第二行,__build 没有 dependency.In 文件的后半部分,__build 有这样的依赖关系:

__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
     $(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \
     $(subdir-ym) $(always)
    @:

第二行看似无意义的是什么意思?固定格式?

一种可能是 make 总是构建它在 makefile 中找到的第一个显式目标,除非您在命令行上请求不同的目标。

__build 目标的这条语句放在 makefile 的顶部可能是为了确保如果您 运行 make 没有其他参数,它将尝试构建 __build 目标,而不管在下面 __build 的“真实”定义之前可能定义了哪些其他目标。