makefile :=和+=

Posted 天之骄子19

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值。也就是前面的是有效的而引用变量之后的就是无效的。

http://blog.sina.com.cn/s/blog_7880f9830102w80f.html

http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html

以上是关于makefile :=和+=的主要内容,如果未能解决你的问题,请参考以下文章

在多个 Makefile 中包含 Makefile 和 Echo 变量

make命令和makefile

通用 Makefile(及makefile中的notdir,wildcard和patsubst)

Makefile简介

如何根据vs工程构建makefile文件

如何调试makefile