Makefile从入门到精通一步到位(38)

2023-04-30 来源:飞速影视
当然,“把变量的值再当成变量”这种技术,同样可以用在操作符的左边:
dir = foo
$(dir)_sources := $(wildcard $(dir)/*.c)
define $(dir)_print
lpr $($(dir)_sources)
endef
这个例子中定义了三个变量:“dir”,“foo_sources”和“foo_print”。
四、追加变量值
我们可以使用“ =”操作符给变量追加值,如:
objects = main.o foo.o bar.o utils.o
objects = another.o
于是,我们的$(objects)值变成:“main.o foo.o bar.o utils.o another.o”(another.o被追加进去了)
使用“ =”操作符,可以模拟为下面的这种例子:
objects = main.o foo.o bar.o utils.o
objects := $(objects) another.o
所不同的是,用“ =”更为简洁。
如果变量之前没有定义过,那么,“ =”会自动变成“=”,如果前面有变量定义,那么“ =”会继承于前次操作的赋值符。如果前一次的是“:=”,那么“ =”会以“:=”作为其赋值符,如:
variable := value
variable = more
等价于:
variable := value
variable := $(variable) more
但如果是这种情况:
variable = value
variable = more
由于前次的赋值符是“=”,所以“ =”也会以“=”来做为赋值,那么岂不会发生变量的递
补归定义,这是很不好的,所以make会自动为我们解决这个问题,我们不必担心这个问题。
五、override 指示符
如果有变量是通常make的命令行参数设置的,那么Makefile中对这个变量的赋值会被忽略。如果你想在Makefile中设置这类参数的值,那么,你可以使用“override”指示符。其语法是:
override <variable> = <value>
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号