递归扩展变量和简单扩展变量
2023-09-27 14:20:25 时间
1 递归扩展变量和简单扩展变量的区别
最大的区别在于,递归扩展变量等号右边的表达式里面的变量要等到该递归变量被用的时候再去扩展,而简单变量的话,在读取makefile的时候就已经扩展了。
并且简单扩展变量有前后关系,简单扩展变量只能用到在其前面定义的变量,而不能用到在其后面定义的变量。而递归扩展变量,要用的时候,需要扩展的时候,可以一直扩展到不能扩展为止,即递归扩展。
2 例子
foo := $(bar)
bar = aaa
all:;echo $(foo)
输出为空,因为在给foo赋值扩展等号右边的时候,还没有bar,因此为空。
foo = $(bar)
bar=aaa
all:;echo $(foo)
输出aaa,读取makefile时,foo等号右边还没有被扩展,要用foo的时候再去递归扩展,到了bar,它的右边已经没有需要继续扩展的变量了,因此停止扩展。
3 如果等号右边就是最终的字符串,那么递归扩展变量和简单扩展变量是一样的
因为不需要再扩展了,要用的时候直接用就可以了。
4 immediate ?= deferred
同等号一样,?=也是左边是立即扩展,右边是推迟扩展,直到用的时候或者第二阶段才扩展。不过左边也需要扩展的情况是比较少的。
相关文章
- Java并发编程(02):线程核心机制,基础概念扩展
- phpstudy 自己扩展 php7.4.29 版本
- MEF(Managed Extensibility Framework)使用全部扩展组件
- 用 Chrome 扩展实现修改
- 《数据中心设计与运营实战》——2.9 扩展阅读
- shell变量替换扩展 字符串计数截取
- Windstream斥资11亿美元收购EarthLink 扩展光纤网络服务
- 剑指offer解法汇总71- 跳台阶扩展问题
- 四、Antd组件扩展
- 三、Signalr WebApi客服-客户链接+Redis(集群扩展)
- 扩展显示器相关
- 高性能的Python扩展:第一部分
- 51单片机:IO口扩展芯片用法(74HC165,74HC595)
- 对Java下的Junit的扩展
- 红帽扩展存储系列产品市场分销路线
- Dubbox-扩展Dubbo服务框架支持REST风格远程调用[网摘]