make参数传递
Uboot的编译需要找到并配置所需的配置文件,make命令要使用到的参数都需要从这些配置文件获取。
控制输出编译信息的模式
参数-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的参数,V=n这个选项传给了make,系统就会给变量KBUILD_VERBOSE选项附上V的值,否则的话KBUILD_VERBOSE就会为0。然后系统会检查KBUILD_VERBOSE的值,以此来决定quiet和Q的值。
ifeq的语法是:feq (<arg1>;, <arg2>;),功能是比较参数“arg1”和“arg2”的值是否相同。
origin的语法:$(origin <variable>;) 函数origin并不操作变量的值,只是告诉你你的这个变量是哪里来的。
origin的返回值如下:
(1)返回值为"undefine"时,这个变量没有被定义过;
(2)返回值为“command line”时,这个变量是被命令行定义的;
(3)返回值为“environment”时,这个变量是定义为环境变量;
(4)返回值为“file”时,这个变量是定义在Makefile中;
(5)返回值为“default”时,变量是默认定义的;
(6)返回值为“override”时,被override指示符重新定义;
(7)返回值为“automatic”时,是一个命令运行中自动化变量。
参数 -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 的参数,则输出slient模式。
full模式:输出完整编译命令。
quiet模式:输出Compiling ***的格式。
silent模式:输出任何信息。
export quiet Q KBUILD_VERBOSE
允许三个参数在下一级中作为参数使用
网友评论