【发布时间】:2021-03-13 15:59:09
【问题描述】:
我从Linux内核学习Makefile。在文件/scripts/Makefile.build中,它以
PHONY := __build
__build:
#Init all relevant variables
obj-y :=
obj-m :=
lib-y :=
...
在第二行,__build 没有依赖关系。在文件的后半部分,__build 有这样的依赖关系:
__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
$(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \
$(subdir-ym) $(always)
@:
看起来毫无意义的第二行是什么意思?固定格式?
【问题讨论】:
-
在
make规则中,target: prerequisites行之后的制表符缩进行(总是一个逻辑行,可能在您的示例中使用行继续)是 命令行当需要构建目标时,将其传递给 shell 以执行。命令行开头的@表示不回显它,而在“标准”(Bourne-family 和 POSIX)shell 中,:是一个不执行任何操作的特殊命令。因此这条规则说不做任何事情来构建目标__build。