uboot Makefile解析(二)

make參數(shù)傳遞

Uboot的編譯需要找到并配置所需的配置文件,make命令要使用到的參數(shù)都需要從這些配置文件獲取。


控制輸出編譯信息的模式

參數(shù)-v

ifeq ("$(origin V)", "command line")
  KBUILD_VERBOSE = $(V)
endif
ifndef KBUILD_VERBOSE
  KBUILD_VERBOSE = 0
endif

ifeq ($(KBUILD_VERBOSE),1)
  quiet =
  Q =
else
  quiet=quiet_
  Q = @
endif

如果命令行中有-V的參數(shù),V=n這個選項傳給了make,系統(tǒng)就會給變量KBUILD_VERBOSE選項附上V的值,否則的話KBUILD_VERBOSE就會為0。然后系統(tǒng)會檢查KBUILD_VERBOSE的值,以此來決定quiet和Q的值。
ifeq的語法是:feq?(<arg1>;,?<arg2>;),功能是比較參數(shù)“arg1”和“arg2”的值是否相同。
origin的語法:$(origin?<variable>;)?函數(shù)origin并不操作變量的值,只是告訴你你的這個變量是哪里來的。
origin的返回值如下:
(1)返回值為"undefine"時,這個變量沒有被定義過;
(2)返回值為“command line”時,這個變量是被命令行定義的;
(3)返回值為“environment”時,這個變量是定義為環(huán)境變量;
(4)返回值為“file”時,這個變量是定義在Makefile中;
(5)返回值為“default”時,變量是默認(rèn)定義的;
(6)返回值為“override”時,被override指示符重新定義;
(7)返回值為“automatic”時,是一個命令運行中自動化變量。


參數(shù) -s

ifneq ($(filter 4.%,$(MAKE_VERSION)),)  # make-4
ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
  quiet=silent_
endif
else                    # make-3.8x
ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
  quiet=silent_
endif
endif

如果命令行中有 -s 的參數(shù),則輸出slient模式。
full模式:輸出完整編譯命令。
quiet模式:輸出Compiling ***的格式。
silent模式:輸出任何信息。

export quiet Q KBUILD_VERBOSE

允許三個參數(shù)在下一級中作為參數(shù)使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容