makefile中=:=和+=的区别

Posted _小百

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了makefile中=:=和+=的区别相关的知识,希望对你有一定的参考价值。

 

经常有人分不清= 、:=和+=的区别  这里我总结下做下详细的分析:

首先你得清楚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中=:=和+=的区别的主要内容,如果未能解决你的问题,请参考以下文章

makefile中ifeq,ifneq,ifdef和ifndef的区别与用法

makefile中=:=和+=的区别

makefile 和 sh 文件有啥区别

makefile 中的 -I 和 -L 有啥区别?

makefile中ifeq,ifneq,ifdef和ifndef的区别与用法

Makefile 中的 := 和 = 有啥区别?