Printing in Makefiles: @echo vs $(info )

What is the difference between these two commands in makefiles:

@echo "Hello World"
$(info Hello World)

As it seems, echo and info print the same output, so where is the difference? And when to use which one?

Well, echo is a shell command. So if you put it in a recipe, a shell will be invoked to run it and the shell command will generate the output:

info is a GNU make function. It is handled directly by make: no shell is invoked. It can appear anywhere in a makefile, not just in a recipe. It is not portable to other versions of make. Because no shell is invoked, there are no quoting issues.

How to print out a variable in makefile

As per the GNU Make manual and also pointed by 'bobbogo' in the below answer, you can use info / warning / error to display text.

$(error   text…)
$(warning text…)
$(info    text…)

To print variables,

$(error   VAR is $(VAR))
$(warning VAR is $(VAR))
$(info    VAR is $(VAR))

'error' would stop the make execution, after showing the error string

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值