カーネルのMakefileはKBUILD_OUTPUT
、ターゲットのmakeプロセスの外部と同じように変数を初期化します。コードは次のようになります。
ifeq ("$(origin O)", "command line")
KBUILD_OUTPUT := $(O)
endif
しかしKBUILD_OUTPUT
、ターゲットのmakeプロセス、たとえばターゲットで出力しようとすると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に何か特別なものはありますか?