第十一章 U-boot 顶层 Makefile 详解(静默输出)

本文介绍了如何在编译U-Boot时启用静默输出功能,通过在Makefile中使用filter和firstword函数判断并设置变量quiet,以控制命令行输出。
摘要由CSDN通过智能技术生成

11.2.4 静默输出

        设置 V=0 或者在命令行中不定义 V 的话,编译 uboot 的时候终端中显示的短命令,但是还是会有命令输出,有时候我们在编译 uboot 的时候不需要输出命令,这个时候就可以使用 uboot 的静默输出功能。编译的时候使用“make -s”即可实现静默输出。
        顶层 Makefile中相应的代码如下:

105 # If the user is running make -s (silent mode), suppress echoing of
106 # commands
107
108 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
109 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
110     quiet=silent_
111 endif
112 else    # make-3.8x
113 ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
114    quiet=silent_
115 endif
116 endif
117
118 export quiet Q KBUILD_VERBOSE

        第 108 行 判 断 当 前 正 在 使 用 的 编 译 器 版 本 号 是 否 为 4.x , 判 断 $(filter4.%,$(MAKE_VERSION))和“ ”(空)是否相等
        如果不相等的话就成立,执行里面的语句。也就是说$(filter 4.%,$(MAKE_VERSION))不为空的话条件就成立。

        这里用到了 Makefile 中的 filter函数,这是个过滤函数,函数格式如下:

$(filter <pattern...>,<text>)

        filter 函数表示以 pattern 模式过滤 text 字符串中的单词,仅保留符合模式 pattern 的单词,可以有多个模式。函数返回值就是符合 pattern 的字符串。
因此$(filter 4.%,$(MAKE_VERSION))的 含 义 就 是 在 字 符 串 “ MAKE_VERSION ” 中 找 出 符 合 “ 4.% ” 的 字 符 (% 为 通 配 符 ) ,
                MAKE_VERSION 是 make 工具的版本号。
                ubuntu18.04 里面默认自带的 make 工具版本号为 4.1。大家可以输入“make -v”查看
因此$(filter 4.%,$(MAKE_VERSION))不为空,条件成立,执行109~111 行的语句。

        第 109 行也是一个判断语句,如果$(filter %s ,$(firstword x$(MAKEFLAGS)))不为空的话条件成立,变量 quiet 等于“silent_”。
        这里也用到了函数 filter,在$(firstword x$(MAKEFLAGS)))中过滤出符合“%s”的单词。
        这里用到了函数 firstword,函数 firstword 是获取首单词。

$(firstword <text>)

        firstword 函数用于取出 text 字符串中的第一个单词,函数的返回值就是获取到的单词。当
使用“make -s”编译的时候,“-s”会作为 MAKEFLAGS 变量的一部分传递给 Makefile。

        第 118 行使用 export 导出变量 quiet、Q 和 KBUILD_VERBOSE。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值