当前位置: 技术问答>linux和unix
make中的目标变量
来源: 互联网 发布时间:2016-02-05
本文导语: 请问如果我这样定义AMSN变量 ,那么是不是应该会作为目标变量. 可以输出全是msn 请目标变量倒底应该怎么用..谢谢@@@ file: Makefile a:kk AMSN=msn foo1:k1 foo1:AMSN+=foo1 foo2:k2 foo2:AMSN+=foo2 k1: @echo "${AMSN}" k2: ...
请问如果我这样定义AMSN变量 ,那么是不是应该会作为目标变量. 可以输出全是msn
请目标变量倒底应该怎么用..谢谢@@@
file: Makefile
a:kk
AMSN=msn
foo1:k1
foo1:AMSN+=foo1
foo2:k2
foo2:AMSN+=foo2
k1:
@echo "${AMSN}"
k2:
@echo "${AMSN}"
kk:k1 k2
@echo "${AMSN}"
请目标变量倒底应该怎么用..谢谢@@@
file: Makefile
a:kk
AMSN=msn
foo1:k1
foo1:AMSN+=foo1
foo2:k2
foo2:AMSN+=foo2
k1:
@echo "${AMSN}"
k2:
@echo "${AMSN}"
kk:k1 k2
@echo "${AMSN}"
|
把Makefile修改为
a:kk
AMSN=msn
foo1:k1
foo1:AMSN+=foo1
foo2:k2
foo2:AMSN+=foo2
k1:
@echo "${AMSN}"
k2:
@echo "${AMSN}"
#这里修改了 kk:k1 k2
kk:foo1 foo2
@echo "${AMSN}"
就可以看到你要的效果了.
"目标指定的变量值只在指定它的目标的上下文中有效,对于其他的目标没有影响。就是说目标指定的变量具有只对此目标上下文有效的“局部性”。"
因此,foo1:k1 只对foo1为目标及以foo1为以来的下文中有效。
原Makefile中 kk:k1 k2 直接以k1,k2为目标,不属于foo1的上下文,因此目标变量没有生效。
a:kk
AMSN=msn
foo1:k1
foo1:AMSN+=foo1
foo2:k2
foo2:AMSN+=foo2
k1:
@echo "${AMSN}"
k2:
@echo "${AMSN}"
#这里修改了 kk:k1 k2
kk:foo1 foo2
@echo "${AMSN}"
就可以看到你要的效果了.
"目标指定的变量值只在指定它的目标的上下文中有效,对于其他的目标没有影响。就是说目标指定的变量具有只对此目标上下文有效的“局部性”。"
因此,foo1:k1 只对foo1为目标及以foo1为以来的下文中有效。
原Makefile中 kk:k1 k2 直接以k1,k2为目标,不属于foo1的上下文,因此目标变量没有生效。