Makefile 自动变量 笔记

文章详细阐述了Makefile中目标和依赖的概念,如目标是待生成的命令或文件,依赖是目标生成所必需的文件或目录。通过示例解释了如何定义变量all_variable来管理依赖,并介绍了自动化变量如$@、$<、$?、$^和$+等的用法,这些变量在处理目标和依赖关系时起到关键作用。
摘要由CSDN通过智能技术生成
  1. 目标与依赖

1.1定义

目标:是要生成的或操作的命令的索引

依赖:是生成目标依赖的文件或目录

1.2解析

示例

all_variable main.o 1.o 2.o

main:$(all_variable)

gcc -o main $(all_variable)

在实例程序种目录即为main,而依赖则是all_variable这个文件集合(文件目录),

我们目标是生成一个可执行文件取名为main,而生成目标文件需要依赖文件目录于是我

们便定义了all_variable这个变量。

  1. 自动化变量

2.1 定义

$@———规则中的目标集合,在模式规则中,如果有多个目标的话,“$@”表示匹配模 式中定义的目标集合。

$%———当目标是函数库的时候表示规则中的目标成员名,如果目标不是函数库文件, 那么其值为空。

$<——— 依赖文件集合中的第一个文件,如果依赖文件是以模式(即“%”)定义的,那么 “$<”就是符合模式的一系列的文件集合。

$?——— 所有比目标新的依赖目标集合,以空格分开。

$^———所有依赖文件的集合,使用空格分开,如果在依赖文件中有多个重复的文件, “$^”会去除重复的依赖文件,值保留一份。

$+ ———和“$^”类似,但是当依赖文件存在重复的话不会去除重复的依赖文件。

$* ———这个变量表示目标模式中"%"及其之前的部分,如果目标是 test/a.test.c,目标模 式为 a.%.c,那么“$*”就是 test/a.test。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值