LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 785|回复: 6

关于Makefile的两种变量有何区别?

[复制链接]
发表于 2005-9-27 21:37:09 | 显示全部楼层 |阅读模式
在Makefile中,有两类变量,类似于如下
OBJS=X.O
OBJS:=X.O
请问,这两种变量使用上有什么区别?
发表于 2005-9-28 08:35:08 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2005-9-28 09:49:09 | 显示全部楼层
一种可以被递归扩展,另一种不行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-28 13:08:25 | 显示全部楼层
make的manual我看过了,就是不太理解。
能详细讲一下吗?
哪种可以递归啊?
回复 支持 反对

使用道具 举报

发表于 2005-9-28 13:39:37 | 显示全部楼层
=可以被扩展
for example:
a = x
b = $($(a))
x = 5
then b = $(x) = 5
:=就不能这么用
回复 支持 反对

使用道具 举报

发表于 2005-9-28 22:45:10 | 显示全部楼层
x:=${y}根据当前的y的值给x赋值, 此时x已经有值了。
x = ${y}直到执行的规则需要用x时, 才用y的值给x赋值, 即延迟赋值。

# Makefile test = and :=
X = 5

Y = $(X)

Z := $(X)

all:
        @echo $(Y)
        @echo $(Z)


X = 10
#end of Makefile test = and :=

输出结果为:
10
5
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-29 18:58:23 | 显示全部楼层
哈,谢谢拉!
恍然大悟哦!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表