当前位置:网站首页>Makefile中patsubst、wildcard、notdir的使用
Makefile中patsubst、wildcard、notdir的使用
2022-08-09 08:39:00 【浩澜大大】
1 patsubst: 替换通配符
格式:
$(patsubst <pattern>,<replacement>,<text> )
名称:模式字符串替换函数——patsubst。
功能:查找text中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式pattern,如果匹配的话,则以替换。
这里,pattern可以包括通配符“%”,表示任意长度的字串。如果replacement中也包含“%”,那么,replacement中的这个“%”将是pattern中的那个“%”所代表的字串。
(可以用“\”来转义,以“%”来表示真实含义的“%”字符)
返回:函数返回被替换过后的字符串。
示例:
$(patsubst %.c,%.o, 1.c 2.c)
把字串“1.c,2.c”符合模式[%.c]的单词替换成[%.o],返回结果是“1.o 2.o”
2 wildcard: 扩展通配符
wildcard得到指定目录下所有的C语言源程序文件名
SRC = $(wildcard *.c)
编译当前目录下所有.c文件,如果还有子目录,比如子目录为inc,则:
SRC = $(wildcard *.c) $(wildcard inc/*.c)
3 notdir: 去除路径
notdir把展开的文件去除掉路径信息
4 综合应用
首先创建如下的目录结构
src = $(wildcard *.c ./sub/*.c)
dir = $(notdir $(src))
obj = $(patsubst %.c,%.o,$(dir) )
all:
@echo $(src)
@echo $(dir)
@echo $(obj)
@echo "end"
wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。
notdir把展开的文件去除掉路径信息
patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o
第三句相当于obj=$(dir:%.c=%.o)
5 扩展
Makefile有三个非常有用的变量。分别是@ , @,@,^,$<代表的意义分别是:
[email protected]目标文件
$^----------------------------所有的依赖文件
$<----------------------------第一个依赖文件下面给出傻瓜的makefile
main:main.o 1.o 2.o
gcc -o main main.o 1.o 2.o
main.o:main.c 1.h 2.h
gcc -c main.c
1.o:1.c 1.h
gcc -c 1.c
2.o:2.c 2.h
gcc -c 2.c
简化后变成了
main:main.o 1.o 2.o
gcc -o [email protected] $^
main.o:main.c 1.h 2.h
gcc -c $<
1.o:1.c 1.h
gcc -c $<
2.o:2.c 2.h
gcc -c $<
在此简化
main:main.o 1.o 2.o
gcc -o [email protected] $^
.c.o:
gcc -c $<
表示所有的 .o文件都是依赖与相应的.c文件的
边栏推荐
- 【KD】2022 KDD Compressing Deep Graph Neural Networks via Adversarial Knowledge Distillation
- QT设置exe可执行文件的图标
- SAE定时备份博客数据库
- VLAN的原理及配置
- requests之防盗链学习
- jdbctemplate连接sql server,代码中查出来的数据跟数据库中不一致,如何解决?
- Introduction to the Endpoint
- Venture DAO 行业研报:宏观和经典案例分析、模式总结、未来建议
- Conversion between number systems
- Where does detection go forward?
猜你喜欢
随机推荐
get一个小技巧,教你如何在typora写文章上传图片到博客上
【CNN】白话迁移学习中域适应
嵌入式之串口中断只能收到一个字节
Some of the topics in VNCTF2021 are reproduced
QT program generates independent exe program (pit-avoiding version)
内存中的swap机制
sizeof 结构体问题
BUUCTF MISC刷题笔记(一)
ctf misc 图片题知识点
hdu2191 多重背包(2016xynu暑期集训检测 -----B题)
The story of the disappearing WLAN of Windows 10 computers
The Servlet,
File Handling (IO)
【CNN】2022 ECCV 对比视觉Transformer的在线持续学习
The Martian - Simple Math Problems
文献检索作业代码
6000 字+,帮你搞懂互联网架构演变历程!
Talking about Flask_script
Shell编程之正则表达式
requests之模拟登录学习