uboot Makefile解析(二)

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

允许三个参数在下一级中作为参数使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。