很多人对$var与$$var东西不理解,总是区分不开Makefile中的变量与shell中的变量,我来解释一下吧。希望对你有用。
首先make精神就是实现自动化编译,是按照Makefile的规则来进行的,啥子规则呢,目标与依赖文件的规则。
凡是目标后面有依赖,并根据依赖产生目标的才是干货,如果只有目标,而没有依赖,那就是伪目标,把它当标签看待就好了。
在Makefile中文件中定义的变量就是Makefile变量,比如 var=3,那么使用就是$var
那$$var代表啥呢,代表的是使用shell变量。这个需要进行一次扩展,在Makefile中目标依赖下面的命令中定义的变脸,就是shell变量,还有一种shell变量,就是外部传递的,export带来的。首先展开shll变量 $var,比如var=4,那么$$var=$4,现在就看$4有没有值,如果没有则为空。