内核 Makefile 像KBUILD_OUTPUT
在任何目标的 make 过程之外一样初始化变量。代码是这样的:
ifeq ("$(origin O)", "command line")
KBUILD_OUTPUT := $(O)
endif
但是当我尝试KBUILD_OUTPUT
在目标的制作过程中输出时,例如目标help
,我发现它没有定义。我修改的代码是这样的:
help:
@echo 'KBUILD_OUTPUT: ${KBUILD_OUTPUT}'
当我执行make O=../build help
时,KBUILD_OUTPUT
变量为空。我想知道什么时候启动?
非常感谢。
更新
但是,当我用这个写一个 Makefile 时:
ifeq ("$(origin O)", "command line")
KBUILD_OUTPUT := $(O)
endif
help:
@echo 'KBUILD_OUTPUT: ${KBUILD_OUTPUT}'
那我跑make O=../build help
,我看看KBUILD_OUTPUT: ../build
。
内核的 Makefile 有什么特别之处吗?