一、基本用法

Makefile中执行shell命令需要在命令前面加上@,例如打印一个变量的值

KERNEL = $(shell uname -r)
INC = /usr/src/kernels/$(KERNEL)/

print:
    @echo $(KERNEL)
    @echo $(INC)

执行make print会有得到理想的输出:

2.6.32-754.6.3.el6.x86_64
/usr/src/kernels/2.6.32-754.6.3.el6.x86_64/

如果不加@符号最后的结果是:

echo 2.6.32-754.6.3.el6.x86_64
2.6.32-754.6.3.el6.x86_64
echo /usr/src/kernels/2.6.32-754.6.3.el6.x86_64/
/usr/src/kernels/2.6.32-754.6.3.el6.x86_64/

可以看到多了几行,分别把每个echo命令也打印出来了。

二、注意事项

2.1 多行命令

当shell脚本中存在多行命令时,换行时要加上\,例如:

@./configure --prefix=/usr/lib \
    aaa=1 bbb=2

2.2 把shell命令的结果赋值给Makefile变量

把shell命令的值赋值需要加上shell关键字,如:

PWD = @(shell pwd)
最后修改:2019 年 01 月 01 日
如果觉得我的文章对你有用,请随意赞赏