最近看了shell和makefile的语法后,顿时觉得大脑太乱了。所以这里先记下他们的差别:
变量:
1.一般变量的引用
比如变量TEST
shell中:
$TEST
makefile中:
$(TEST)
2.环境变量的引用
比如PATH
shell中:
$TEST
makefile中:
$(TEST)
3.makefile在命令区引用shell的变量:
比如TEST
应该用$$TEST,这时因为两个$就会转译成一个$,那么就和shell中一样了。
而且这个TEST必须在同一个进程中。shell是一行一个进程所以需要考虑处理办法,这里参看这篇博文:
调用
1.命令的调用:
比如pwd
shell中:
方法1:直接使用pwd
方法2:$(pwd) 多用于命令的输出结果来赋值到一个变量,如 PWD=$(pwd) !容易和makefile中的变量引用混淆。
方法3:`pwd` 多用于命令的输出结果来赋值到一个变量,如 PWD=`pwd`
makefile中:
在命令执行区,其实这里是和在shell中略有不同,作用同shell:
方法1:直接使用pwd
方法2:`pwd`
方法3:$$(pwd)
在变量定义区:
方法1:$(shell pwd) 这里其实是调用了shell函数
注意这里有人说在变量定义时也可以使用`pwd`:
比如
path = 'pwd'
在命令中调用
echo $(path)
这里其实是把 $(path)替换成了'pwd',这样就变成了在命令区的规则了。