Makefie打印信息控制代码说明

Makefile常见的对于打印信息的控制代码如下,乍一看有点蒙蔽,所以深入研究了下:

SILENT=@  ---1
CT_ECHO=echo --2
ifeq ($(strip $(origin V)),command line) ---3
  ifeq ($(strip $(V)),0) ---4
    SILENT=@ ---5
    CT_ECHO=: ---6
  else
    ifeq ($(strip $(V)),1) ---7
      SILENT= ---8
      CT_ECHO=: ---9
    else
      ifeq ($(strip $(V)),2) ---10
        SILENT= ---11
        CT_ECHO=echo ----12
      endif # V == 2
    endif # V== 1
  endif # V == 0
endif # origin V

本文将详细说明每行代码的作用,为了方便说明,本文以一个简单的例子为基础,如下所示,为一个简单的Makefile

SILENT=@
CT_ECHO=echo
ifeq ($(strip $(origin V)),command line)
    #一个不打印
  ifeq ($(strip $(V)),0)
    SILENT=@
    CT_ECHO=:
  else
    ifeq ($(strip $(V)),1)
      SILENT=
      CT_ECHO=:
    else
      ifeq ($(strip $(V)),2)
        SILENT=
        CT_ECHO=echo
      endif # V == 2
    endif # V== 1
  endif # V == 0
endif # origin V

all: help

help:
    $(SILENT)$(CT_ECHO) test...

1. 1~2配置默认值,如果make没有指定v=xx,则以这种模式去打印调试信息,这种模式表示不输出要执行的命令,但是输出调试信息

        如$(SILENT)$(CT_ECHO) test,则输入如下:

2. 第3行有必要解释下,$(origin V)是在获取变量V的来源,如果是来源于执行命令后跟的参数,则为command line(其它情况见相关章节介绍),strip表示合并多余的空格、去掉起始和结束字符串。所以这行的意思是判断V是否来源于命令行。

3. 第4行表示V如果等于0,则不输出命令,且不输出任何内容,如下图所示,什么都没有,这种模式是最安静的一种模式了,基本不会打印信息

4. 第7行表示判断V是否等于1,如果等于1,则SILENT为空,CT_ECHO为:这种模式下,会输出要执行的命令,并在前面加上:,不会输出要打印的信息。这种模式属于中间派系,有些调试信息输出,但不是很多,如下图所示:

5. 第10行表示判断V是否等于2,如果等于2,则SILENT为空,CT_ECHO为echo,说明不仅输出即将执行的命令,还会输出要打印的信息,如下图所示:

 以上就是Makefile打印打印信息的配置方案的详细解释,欢迎大家一起交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值