linuxC--makefile使用变量

使用变量

定义变量的一般形式:

变量名 赋值符 变量值
变量名:由字母、数字和下划线组成
赋值符:主要有=、:=、+=、?= 不同的赋值符有不同的意义
变量值:文本字符串

在含有变量的 makefile 中,make 执行是吧变量名出现的地方用对应的变量值来替换。makefile中的变量类型类似于C语言中的宏。makefile中的变量是区分大小写的,也就是说比那辆"varl" 和 “Varl” 是两个不同的变量。
有些变量是系统预定好的,如: @ 、 @、 @?、$<、#*等

1. 引用变量

格式:$(变量名) 或 变 量 名 , 如 果 变 量 值 是 单 字 符 , 可 直 接 使 用 “ {变量名},如果变量值是单字符,可直接使用“ 使变量名”
如果要使用字符 " &quot; , 要 用 &quot; &quot;,要用&quot; ","$"表示。

2. 定义变量

makefile 中,有两种类型的变量:
①递归展开变量:通过“=”赋值的变量。
②立即展开变量:通过“:=”复制的变量。
例 递归展开变量:

foo = $(bar)
bar = $(ugh)
ugh = Huh
all:
        echo $(foo)

运行:

$ make
echo Huh
Huh

整个的替换过程是在执行:echo $(foo) 时完成的。
这种定义方法的好处:在变量为定义时就可以使用该变量。
缺点:可能造成死循环。如:CFLAGS = $(CFLAGS) -O
立即展开变量 例:

x := foo
y := $(x) bar
x := later

这种类型的变量在定义是立即展开,而不是在引用时才展开。
③条件赋值”?=”:只有此变量在之前没有赋值的情况下才会对变量进行赋值。

FOO ?= bar

变量赋值:

objects = main.o foo.o bar.o utils.o

该语句定义了一个变量 objects ,其值为一个 .o 列表。
一个变量在定义之后,可以对其值进行追加,这是非常有用的。在 makefile 中使用“+=”(追加赋值符)来实现对一个变量的追加操作。

onjects += another.o

3. 预定义变量

在 makefile 中有许多预定义变量,可以直接使用。在隐含规则中通常会使用预定义变量。
makefile 中还预定义了一组变量,它们的值在 make 运行过程中可以动态改变,是隐含规则所必须的变量,称为自动变量。
常用的自动变量: @ 、 @、 @%、$<。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值