首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Makefile学习(三)

2012-07-19 
Makefile学习(3)今天就学学有关makefile中有关变量的内容(这周偷懒偷懒, 内容比较少)。?1.变量的使用:?变量

Makefile学习(3)

今天就学学有关makefile中有关变量的内容(这周偷懒偷懒, 内容比较少)。

?

1.变量的使用:

?变量的命名规则:数字字母下划线,但是不应该含有“:? #? = ”或者空字符(空格、回车等)??????????????????????????????? 变量的大小写敏感?变量在声明时需要付初值,在使用时需要在变量名前加上$符号,最好使用()或者{}将变量给包括起来。?如果需要使用真实的$,那么你需要使用$$表示


2.变量赋值(=?????? :=???? ?=?? =+)

?

?

“=”:

左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,在右侧变量中不一定非要使用已定义好的值,其也可以使用后面定义的值。
eg
foo=$(bar)
bar=$(ugh)
ugh=Huh?
all:
?? echo $(foo)

当我们执行 make all 将会打印出变量$(foo)的值“Huh?”

“:=”:

左侧是变量,右侧是变量的值,右侧变量的值只能定义在前面
eg
x:=foo
y:=$(x) bar

如果写成下面的样子:
y:=$(x) bar
x:=foo

那么y值只是? bar? 而不是? foo? bar

?=

FOO?=bar
其含义是:如果变量FOO没有被定义过,那么变量FOO的值就是bar,如果FOO定义过了,则这条语句什么都不做。等价于
ifeq($(origin FOO),undefined)
??? FOO=bar
endif

变量的值作为变量
eg
x=y
y=z
z=u
a:=$($($(x)))

过程如下:
$(x)值y
将y作为变量
$(y)值z
将z作为变量
$(z)值u
所以
S(a)的值为u

复杂一点的例子:
first_second=Hello
a=first
b=second
all=$($a_$b)
过程如下:
$a:first
$b:second
所以
$a_$b组成“first_second”
故$all值为Hello

追加变量

操作符:+=
eg.
objects=main.o? foo.o? bar.o
objects+=another.o
那么$(objects)值为:main.o? foo.o? bar.o? another.o

等价于

objects=main.o? foo.o? bar.o
objects:=$(objects) another.o

注:
如果变量之前没有被定义过,则+=会自动变成=

热点排行