Makefile自动化变量

本文详细介绍了Makefile中的自动化变量,包括$@、$%、$<等,并解释了它们在构建过程中的作用及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/haoel/article/details/2886/

整理陈皓的《跟我一起学Makefile》的自动化变量

自动化变量

说明

例子

$@

表示规则中的目标文件集

 

$%

仅当目标是函数库文件(Unix下[.a],Window下[.lib])时,表示规则中的目标成员名。

如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是"foo.a"

$<

依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。

 

$?

所有比目标新的依赖目标的集合。以空格分隔

 

$^

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

 

$+

也是所有依赖目标的集合。不去除重复的依赖目标。

 

$*

目标模式中"%"及其之前的部分

如果目标是"dir/a.foo.b",并且目标的模式是"a.%.b",那么,"$*"的值就是"dir/a.foo"

$(@D)

表示"$@"的目录部分(不以斜杠作为结尾)

如果"$@"值是"dir/foo.o",那么"$(@D)"就是"dir",而如果"$@"中没有包含斜杠的话,其值就是"."(当前目录)。

$(@F)

表示"$@"的文件部分

如果"$@"值是"dir/foo.o",那么"$(@F)"就是"foo.o",

$(*D)

表示"$*"的目录部分

 

$(*F)

表示"$*"的文件部分

 

$(%D)

表示"$%"的目录部分

 

$(%F)

表示"$%"的文件部分

 

$(<D)

表示"$<"的目录部分

 

$(<F)

表示"$<"的文件部分

 

$(^D)

表示"$^"的目录部分

 

$(^F)

表示"$^"的文件部分

 

$(+D)

表示"$+"的目录部分

 

$(+F)

表示"$+"的文件部分

 

$(?D)

表示"$?"的目录部分

 

$(?F)

表示"$?"的文件部分

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值