Makefile 之 自动化变量

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

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

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

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

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

%.o : %.c

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

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

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

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

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

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

'$@ 表示目标文件

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

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

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

相关推荐
峥无14 分钟前
Linux进程信号:从基础概念到内核底层原理
linux·运维·服务器·信号处理
广州灵眸科技有限公司24 分钟前
瑞芯微RV1126B开发板(EASY-EAI-PI2) 开发(编译)方式说明
linux·服务器·单片机·嵌入式硬件·电脑
北山有鸟1 小时前
用开发板的.config替换ubuntu中内核源码目录的.config
linux·运维·ubuntu
jcbut1 小时前
离线安装dify 1.7
linux·运维·dify
云计算磊哥@2 小时前
运维开发宝典024-Linux云计算运维入门阶段总结
linux·运维·运维开发
江华森2 小时前
《Linux内核技术实战:从Page Cache到CPU调度的深度解构》博客大纲(26讲精编版)
linux
知无不研2 小时前
对套接字的深入理解
linux·服务器·网络·c++·socket·网络套接字
wuminyu4 小时前
Java锁机制之Java对象重量级锁源码剖析
java·linux·c语言·jvm·c++
deadbird5 小时前
Xbox 无线适配器 Linux 设置指南
linux
wait a minutes5 小时前
Ubuntu 升级后 NVIDIA 驱动修复指南
linux·运维·ubuntu