makefile 语法_makefile %_nis makefile 语法(19)

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

这个例子中定义了三个变量:“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>

override <variable> := <value>

当然,你还可以追加:

override <variable> = <more text>

对于多行的变量定义,我们用define指示符,在define指示符前,也同样可以使用ovveride指示符,如:

override define foo

bar

endef

六、多行变量

还有一种设置变量的方法是使用define关键字。使用define关键字设置变量的可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。

define指示符后面跟的是变量的名字,而重起一行定义变量的,定义是以endef关键字结束。其工作方式和“=”操作符一样。变量的可以包含函数、命令、文字,或是其它变量。因为命令需要以[Tab]键开头,所以如果你用define定义的命令变量中没有以[Tab]键开头,那么make就不会把其认为是命令。

下面的这个示例展示了define的用法:

define two-lines

echo foo

echo $(bar)

endef

七、环境变量

make运行时的系统环境变量可以在make开始运行时被载入到Makefile文件中,但是如果Makefile中已定义了这个变量,或是这个变量由make命令行带入,那么系统的环境变量的将被覆盖。(如果make指定了“-e”参数,那么,系统环境变量将覆盖Makefile中定义的变量)


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

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

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