linux Makefile configure里面 += := -= 这些符号的意思?
2013-06-05 16:04
393 查看
linux Makefile configure里面 += := -= 这些符号的意思?
2012-01-29 09:00double_crane | 分类:Linux | 浏览406次:= 把冒号去了 make时候也可以啊 makeconfig 生成的config里面 += -= := 之类都是什么意思啊 跟=有什么不一样么
![](http://img.iknow.bdimg.com/appqb.png)
提问者采纳
2012-01-29 11:20
:= 和 = 用在赋值时,:= 的赋值是马上生效, 而 = 则是等到变量被引用时才递归生效。用两个简单的makefile举例说明最简单: makefile1: bar=456 foo=${bar} bar=${xxx} xxx=123 all: echo ${foo} echo出的结果是 123, foo的值在 echo 的时候,先被扩展成 ${bar}, 再递归的被扩展成 ${xxx},最终是123 makefile2: bar=456 foo:=${bar} bar=${xxx} xxx=123 all: echo ${foo} 此时由于 用了 := ,在赋值时候 foo 的值就直接被扩展成 bar 在那个时刻的值,即 456, 最后的echo的结果也就是 456 了。 += 就很简单了,就是在一个变量的值的尾部增加内容,如: foo = abc foo += efg 则 foo 的值就是 abc efg makefile没有 -= 这个操作符。
提问者评价
举的例子具体,看懂了 做了一下确实是的 谢谢 楼下的也谢谢了
评论(3)|4
![](http://img.iknow.bdimg.com/avatar/48/r6s1g12.gif)
kwydwuf |来自团队C@Linux |十二级采纳率68%
擅长:C/C++Linux
按默认排序|按时间排序
其他1条回答
2012-01-29 12:10kewang_n|四级‘=’定义的叫递归展开式变量,用它给某个变量赋值,后面的表达式不会在定义时就展开,而是在make程序执行到他的相关操作的时候才展开——即用的时候才生效 ‘:=’定义的叫直接展开式变量,赋值时将后面表达式的值马上展开传递给变量——即立即生效。 +=,-=这种是用来对变量进行追加定义的操作符,在原有的定义基础上加上或减去某个定义,比如去掉某个对象.o文件。
2012-01-29 09:00double_crane | 分类:Linux | 浏览406次
:= 把冒号去了 make时候也可以啊 makeconfig 生成的config里面 += -= := 之类都是什么意思啊 跟=有什么不一样么
![](http://img.iknow.bdimg.com/appqb.png)
提问者采纳
2012-01-29 11:20
:= 和 = 用在赋值时,:= 的赋值是马上生效, 而 = 则是等到变量被引用时才递归生效。用两个简单的makefile举例说明最简单: makefile1: bar=456 foo=${bar} bar=${xxx} xxx=123 all: echo ${foo} echo出的结果是 123, foo的值在 echo 的时候,先被扩展成 ${bar}, 再递归的被扩展成 ${xxx},最终是123 makefile2: bar=456 foo:=${bar} bar=${xxx} xxx=123 all: echo ${foo} 此时由于 用了 := ,在赋值时候 foo 的值就直接被扩展成 bar 在那个时刻的值,即 456, 最后的echo的结果也就是 456 了。 += 就很简单了,就是在一个变量的值的尾部增加内容,如: foo = abc foo += efg 则 foo 的值就是 abc efg makefile没有 -= 这个操作符。
提问者评价
举的例子具体,看懂了 做了一下确实是的 谢谢 楼下的也谢谢了
评论(3)|4
![](http://img.iknow.bdimg.com/avatar/48/r6s1g12.gif)
kwydwuf |来自团队C@Linux |十二级采纳率68%
擅长:C/C++Linux
按默认排序|按时间排序
其他1条回答
2012-01-29 12:10kewang_n|四级‘=’定义的叫递归展开式变量,用它给某个变量赋值,后面的表达式不会在定义时就展开,而是在make程序执行到他的相关操作的时候才展开——即用的时候才生效 ‘:=’定义的叫直接展开式变量,赋值时将后面表达式的值马上展开传递给变量——即立即生效。 +=,-=这种是用来对变量进行追加定义的操作符,在原有的定义基础上加上或减去某个定义,比如去掉某个对象.o文件。
相关文章推荐
- SVNsvn文件里有问号,打勾,感叹号,蓝色的十字符号,这些符号分别代表什么意思?SVN里面的AD
- eclipse里面ctrl+T查看继承树,左边的这些绿色红色,F,S,C代表什么意思
- HttpClient 4.2.3 (GA) 这些名字里面都有GA,GA代表什么意思啊?
- Linux ./configure --prefix 命令是什么意思?
- Linux命令行帮助解析--各种符号意思
- Linux ./configure --prefix 命令是什么意思?
- 在makefile文件中,@$符号代表什么意思?
- 为什么一些linux基础静态库(如libc.a)里面包含那么多目标文件.o呢? 为什么不将这些.o文件进行提前糅合呢?
- 如何去掉linux源文件里面的^M符号简单方法
- 在makefile文件中,@$符号代表什么意思?
- Linux ./configure --prefix 命令是什么意思?
- css样式表<style>元素里面的*符号代表声明意思?
- Linux ./configure --prefix 命令是什么意思?
- Linux下利用makefile.am和configure.in产生可安装源码包过程整理
- Linux ./configure --prefix 命令是什么意思?
- linux里面的$是什么意思?
- Linux的automake出现的问题(Makefile.am: C objects in subdir but `AM_PROG_CC_C_O' not in `configure.ac')
- 变量语句在makefile文件中,@$符号代表什么意思?
- Linux下Makefile的编写及四个特殊符号的意义@、$@、$^、$<
- linux下autoscan, aclocal, autoconf, automake以及Makefile.am, Configure.in等文件和工具的使用