makefile中=、:=和+=的区别
2015-06-19 17:00
253 查看
疯雨-版权所有,转载请注明【http://blog.csdn.net/u010346967】
经常有人分不清= 、:=和+=的区别 这里我总结下做下详细的分析:
首先你得清楚makefile的运行环境,因为我是linux系统,那么我得运行环境是shell
在Linux的shell里,shell只认识字符串,所以你就不要说整形什么的了。说值也不贴切。
先看+=是什么意思?
因为shell只认识字符串,所以这里应该不难联想到+=就是字符串连接的意思。相当于c语言的 strcat
举个例子:
x本来是 U;
x += SB;
那么运行结果就是 x为USB;
接着理解:=和=
这个是很常用的,比=用得多
看下面的例子:
x = sb;
y = u$(x)
x = all
运行结果x 是all y是uall
将=改成:=
x := sb;
y := u$(x)
x := all
运行结果x是all y是usb
怎么样?有感觉了吧。这里=的话算$(x)的时候会一直搜索到文件最后,最后再赋值。
而:=则不会搜索后面的x值。也就是前面的是有效的而引用变量之后的就是无效的。
经常有人分不清= 、:=和+=的区别 这里我总结下做下详细的分析:
首先你得清楚makefile的运行环境,因为我是linux系统,那么我得运行环境是shell
在Linux的shell里,shell只认识字符串,所以你就不要说整形什么的了。说值也不贴切。
先看+=是什么意思?
因为shell只认识字符串,所以这里应该不难联想到+=就是字符串连接的意思。相当于c语言的 strcat
举个例子:
x本来是 U;
x += SB;
那么运行结果就是 x为USB;
接着理解:=和=
这个是很常用的,比=用得多
看下面的例子:
x = sb;
y = u$(x)
x = all
运行结果x 是all y是uall
将=改成:=
x := sb;
y := u$(x)
x := all
运行结果x是all y是usb
怎么样?有感觉了吧。这里=的话算$(x)的时候会一直搜索到文件最后,最后再赋值。
而:=则不会搜索后面的x值。也就是前面的是有效的而引用变量之后的就是无效的。
相关文章推荐
- java基础之 集合
- linux中断和异常睡眠问题
- 2.Logistic Regression
- 2.Logistic Regression
- 【Linux探索之旅】第一部分第二课:下载Linux,免费的噢
- 云架构指挥调度平台技术方案建议书
- CADMeister.v6.1-ISO 1DVD
- 怎么判断mp4文件的第一个关键帧在什么位置
- android有时无法读取url图片资源
- 简易Java(04):Java如何进行静态类型检查?
- Table View 学习
- 腾讯云搜纠错(QC)系统----用户的每一次错误搜索都能获得惊喜
- OJ积累--商品销售
- 查看树莓派的CPU温度
- Android的第二次增加SurfaceView基本使用
- JAVA 安全性转码代码(包括sql注入,跨站脚本)
- 解决gnuplot中'Terminal type set to 'unknown'不能显示绘图的问题
- COPRA RF 2005 SR1最新版 (冷弯成型,轧辊设计)
- 自适应屏幕大小的网页是怎么做出来的
- Rhel6.5_Nginx1.45_Php5.59_MySQL5.6.16编译安装(集成LNMP环境)