Makefile 自动化变量以及模式匹配

1. 自动化变量

Makefile中的自动化变量可以大大简化Makefile的书写,使其更加简洁和易于维护。这些变量在规则的命令中被自动赋值,根据当前目标和依赖的上下文来确定具体的值。下面是一些常用的自动化变量:

bash 复制代码
$@  " 表示目标文件
bash 复制代码
$<  " 表示第一个依赖文件
bash 复制代码
$^  " 表示所有的依赖文件

2. 模式匹配

使用模式匹配通常能匹配多个目标文件,避免了重复书写

2.1 匹配的规则

bash 复制代码
%.target : %.source
	<command>

其中 % 是一个通配符,代表任意数量的字符。比如,要从多个.c文件编译出.o文件,你可以使用如下模式规则:

bash 复制代码
%.o : %.c
	$(CC) $(CFLAGS) -c $< -o $@

2.2 匹配的规则

多模式匹配

bash 复制代码
%.o: %.c %.h
	$(CC) $(CFLAGS) -c $< -o $@

这条规则意味着每个.o文件不仅取决于对应的.c文件,还取决于同名的.h文件。如果.c或.h文件发生变化,对应的.o文件将被重新编译。

相关推荐
cui_ruicheng5 分钟前
Linux基础开发工具(三):Git 版本控制与 GDB 调试入门
linux·git·编辑器
.柒宇.8 分钟前
构建 keepalived + LVS + Nginx + DNS + NFS 的高可用集群系统
运维·nginx·lvs
贺小涛9 分钟前
Jaeger深度解析
linux
源远流长jerry10 分钟前
负载均衡概述
linux·运维·网络·架构·负载均衡·lvs
Shingmc314 分钟前
【Linux】进程信号
linux·运维·服务器
默|笙15 分钟前
【Linux】线程概念与控制(3)_地址空间布局
linux
RisunJan21 分钟前
Linux命令-nc(用于设置路由器,是网络工具中的瑞士军刀)
linux·运维·服务器
尤老师FPGA8 小时前
petalinux修改设备树添加vdma生成linux系统
android·linux·运维
yxy___8 小时前
达梦分布式集群DPC_重做副本-操作指南(DEM)_yxy
运维·分布式
月山知了8 小时前
linux kernel component子系统:基于rk3588 Android 14 kernel-6.1 display-subsystem代码分析
android·linux·运维