makefile使用笔记(二)变量

时间:2022-03-09 12:52:27

By francis_hao    Oct 30,2017

 

makefile中可以使用变量,变量有多种类型,下面分别介绍

简单变量

简单变量的命名规则和c语言一致。

给变量赋值就表示创建了这个变量,使用变量时需使用$()或${}这样的形式。

变量的赋值有几种不同的形式

=

递归扩展的变量赋值,仅当在变量被使用的时候才去扩展。变量可以先使用后赋值

例如:

a=$(b)

b=$(c)

c=d

在一系列的赋值过后,a的值就是$(b)。

只有在使用a的时候,才会一步步的扩展a=$(b)=$(c)=d

:=

简单扩展的变量赋值,变量立即扩展,变量需要先赋值再使用

例如:

a=$(b)

b=$(c)

c=d

在一系列的赋值过后,a的值是'',也就是空。因为在执行a=$(b)的时候,就要立即扩展,而此时b还没有被赋值,也就是空的。

?=

如果变量之前没有被定义,则执行赋值操作,否则什么也不做

+=

追加变量值

如果变量之前没有被定义过,那么+=自动变成=。

如果变量之前有过赋值操作,就进行追加赋值,赋值属性继承之前的赋值操作(=/:=)

 

 

自动化变量

自动化变量是指符合某一规则或模式的值

$@

表示规则中的目标

$<

依赖目标中的第一个目标文件??

$?

所有比目标新的依赖,以空格分隔

$^

所有的依赖目标的集合,以空格分隔,若有重复只保留一份。

$+

所有的依赖目标的集合,以空格分隔,不去除重复的

$*

表示目标模式中%及其以前的部分,abcd.v -> %.v ->abcd

make可以识别一些常见的后缀名,比如hello.o对应的$*就是hello

 

 

makefile使用笔记(二)变量
本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 * 许可协议进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/7757822.html

 

 

参考

【1】 跟我一起写Makefile 陈皓 http://blog.csdn.net/haoel/article/details/2886/