【四】makfile输出调试信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoxu2050/article/details/83928161

语法

makefile可以输出三个级别的调试信息,error,warning和info

$(error ...)
$(warning ...)
$(info ...)

例如:

$(info Makefile Start ......)
var= abc
$(info $$var is $(var));    

输出:

Makefile Start ......
$var is abc

其中error、warning、info均为makefile函数。$$表示输出一个$符号

示例

使用调试信息,测试递归赋值和直接赋值的区别

$(info Makefile Start ......)
#recursively expanded variables
var_rev = $(info info: expanded 1)abc123
var2_rev = $(info info: expanded 2)$(var_rev)


#simply expanded variables
var_sev := $(info info: myvar_1 assign to myvar)myvar_1
var_sev := $(info info: myvar_2 assign to myvar)myvar_2


shell_info := $(shell echo echo_message)

all:
    $(info $$var2_rev is ${var2_rev})
    $(info $$var_sev is ${var_sev})
    $(info $$var_sev is $(var_sev))
    $(info $$shell_info is $(shell_info))

执行make,输出内容:

Makefile Start ......
info: myvar_1 assign to myvar
info: myvar_2 assign to myvar
info: expanded 2
info: expanded 1
$var2_rev is abc123
$var_sev is myvar_2
$var_sev is myvar_2
$shell_info is echo_message

分析:

  • var_sev是直接赋值,所以输出b,c的两句调试信息
  • var2_rev是递归赋值会延迟展开,在执行目标all的第一句时中引用${var2_rev},这时展开var2_rev输出的语句d;
  • var2_rev赋值过程中又引用了var_rev,这时展开var_rev输出语句e。

猜你喜欢

转载自blog.csdn.net/xiaoxu2050/article/details/83928161
今日推荐