b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

makefile 语法_makefile 不同 后缀_makefile :(18)

电脑杂谈  发布时间:2017-04-11 03:08:34  来源:网络整理

first_second = Hello

a = first

b = second

all = $($a_$b)

这里的“$a_$b”组成了“first_second”,于是,$(all)的就是“Hello”。

再来看看结合第一种技术的例子:

a_objects := a.o b.o c.o

1_objects := 1.o 2.o 3.o

sources := $($(a1)_objects:.o=.c)

这个例子中,如果$(a1)的是“a”的话,那么,$(sources)的就是“a.c b.c c.c”;如果$(a1)的是“1”,那么$(sources)的是“1.c 2.c 3.c”。

再来看一个这种技术和“函数”与“条件语句”一同使用的例子:

ifdef do_sort

func := sort

else

func := strip

endif

bar := a d b g q c

foo := $($(func) $(bar))

这个示例中,如果定义了“do_sort”,那么:foo := $(sort a d b g q c),于是$(foo)的就是“a b c d g q”,而如果没有定义“do_sort”,那么:foo := $(sort a d bg q c),调用的就是strip函数。

当然,“把变量的再当成变量”这种技术,同样可以用在操作符的左边:

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会自动为我们解决这个问题,我们不必担心这个问题。

如果有变量是通常make的命令行参数设置的,那么Makefile中对这个变量的赋会被忽略。如果你想在Makefile中设置这类参数的,那么,你可以使用“override”指示符。其语法是:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-40627-18.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...