Chinaunix

标题: 腳本中的賦值,比如 VERSION ?=2.6.15 中的?=如何解釋? [打印本页]

作者: locom    时间: 2009-03-17 10:57
标题: 腳本中的賦值,比如 VERSION ?=2.6.15 中的?=如何解釋?
如題,在google中沒有找到答案,為了节省时间求助下大家,
作者: oldoger    时间: 2009-03-17 10:58
VERSION ?=2.6.15
没有这样赋值的吧
贴全一点,上下文
作者: locom    时间: 2009-03-17 11:04
标题: 回复 #2 oldoger 的帖子
这个例子: KERNELVER ?= $(shell uname -r)
不好意思,上面我举的例子不够精确
作者: biglazybug    时间: 2009-03-17 11:07
$(shell uname -r) 代表命令替换 ?不知道是啥
作者: locom    时间: 2009-03-17 11:18
标题: 回复 #4 biglazybug 的帖子
$(shell uname -r)我明白,我认为 ?=  是结合在一起的,以前看过,现在忘记了, 比如变量KERNELVER 已经定义且非空之类的, 希望知道的人详细解释一下,谢谢。
作者: oldoger    时间: 2009-03-17 11:22
标题: 回复 #5 locom 的帖子
shell环境是什么?
作者: ly5066113    时间: 2009-03-17 11:26
标题: 回复 #1 locom 的帖子
这应该是 makefile 的语法,而不是 shell 的。
作者: locom    时间: 2009-03-17 11:29
标题: 回复 #7 ly5066113 的帖子
谢谢各位,的确是makefile的用法,我记错了, 我在看的脚本功能是自动生成makefile, 我找找makefile的资料
作者: locom    时间: 2009-03-17 11:32
Makefile语言的变量赋值2008-04-20 21:37内核makefile 是配合GNU make使用的.除了Gnu make的文档的特点,内核makefile 还有一些GNU扩展的功能.

Gnu make有多种赋值操作符: =   := ?= +=

1 “=” 在”=”左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,右侧的变量不一定非要是已定义好的值,其也可以使用后面定义的值.

2 “:=” 前面的变量不能使用后面的变量,只能使用前面已定义好了的变量.如果是这样:

   y := $(x) bar

x :=foo

那么,y的值就是”bar”,而不是”foo bar”

3 “?=”   FOO?=bar ,其含义是FOO没有被定义过,那么变量FOO的值就是”bar”:如果FOO先前被定义过,那么这条语句将什么都不做.

4 “+=”   将右边的变量值附加给左边的变量

   foo=string1

   foo+=string2

这时,foo的变量值为string1 string2
作者: 飞鸿无痕    时间: 2009-03-17 11:37
原帖由 locom 于 2009-3-17 11:32 发表
Makefile语言的变量赋值2008-04-20 21:37内核makefile 是配合GNU make使用的.除了Gnu make的文档的特点,内核makefile 还有一些GNU扩展的功能.

Gnu make有多种赋值操作符: =   := ?= +=

1 “=” 在”=”左 ...

学习了!!!谢谢共享!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2