在编写makefile文件时,我们经常要用到@和$$符号,但是对他们的作用却不是很了解,下面就是我的实验脚本,就该脚本应该可以很清楚的了解其作用。
#!/usr/bin/bash
cat > 'Makefile' <<'EOF'
dir=/home/steven
target:
@echo 'hello'
@echo $(dir)
@for i in `ls`; \
do \
echo $$i; \
done
EOF
echo 'making'
make
echo 'done'
需要区分的是make内置变量和shell内置变量,在执行make命令时,脚本会扩展变量,例如:$(dir)扩展之后是/home/stev
en,$$i扩展之后是$i。
如果没有@在shell命令前面,make会首先显示该命令,接着打印之后该命令的结果。并且shell命令还得再target里面执行才
行,放在外面的shell命令,一般情况下执行不通过。我执行的时候报Makefile:2: *** missing separator. Stop.
此文章由指尖极客原创,转载请指出其作者和出处!http://blog.csdn.net/wenchao126