Makefile 之 自动化变量

作用范围只在这条规则以及连带规则中,所以其值也只在作用范围内有效。而不会影响规则链以外的全局变量的值。

"@" 表示目标的集合,就像一个数组,"@"依次取出目标,并执于命令。

"\<"和"@"则是自动化变量,

"$<"表示所有的依赖目标集(也就是"foo.c bar.c"),

"$@"表示目标集(也就是"foo.o bar.o")。

%.o : %.c

(CC) -c (CFLAGS) (CPPFLAGS) < -o $@

其中,"@"表示所有的目标的挨个值,"<"表示了所有依赖目标的挨个值。这些奇怪的变量我们叫"自动化变量".

"$@ 扩展成当前规则的目的文件名,

"$< 扩展成依靠列表中的第一个依靠文件,

"$^ 扩展成整个依靠的列表(除掉了里面所有重复的文件名)。利用这些变量,

"自动环变量"$?"在这里表示依赖文件列表中被改变过的所有文件。

'$@ 表示目标文件

'$^ 表示所有的依赖文件

'$< 表示第一个依赖文件

'$? 表示比目标还要新的依赖文件列表

相关推荐
从零开始的嵌入式之旅22 分钟前
day46
linux·arm开发·笔记·嵌入式硬件
虚无的纽扣38 分钟前
【Linux】将进程知识与基础IO融会贯通——简单自定义Shell的实现
linux·ubuntu
傲世仙尊1 小时前
预处理详解-define宏井号条件编译一篇过
linux·c语言
忆挽篱笙歌1 小时前
linux基本指令
linux
小小de风呀1 小时前
de风——【从零开始学习Linux】(五):gcc编译器的基本使用
linux·运维·服务器
一只旭宝1 小时前
面试预备:Linux指令专题
linux·笔记
xbzb1 小时前
Linux 进程调度与优先级调优避坑指南
linux·运维
金士顿1 小时前
ASP.NET Core Native AOT + systemd 实战:把 Linux ARM64 程序变成可靠的设备服务
linux·嵌入式·asp.net core·arm64
Rabitebla2 小时前
【Linux 系统编程】权限(一):身份、提权,和那 9 个权限位
linux·数据结构·c++·算法
byte轻骑兵2 小时前
【BlueZ 】Linux 内核蓝牙子系统入门:hci_core 模块与 BlueZ 的交互
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙