易商讯
当前位置: 首页 » 资讯 » 知识 » 正文

patsubst(patsubst makefile)

放大字体  缩小字体 发布日期:2023-06-21 07:34:35
导读

本文将详解Makefile中的一种常用指令——patsubst,包括patsubst指令的作用、语法规则、实例演示和常见用法,为你深入了解Makefile提供帮助。1、patsubst指令概述patsubst是Makefile中的一种模式替换命令,用于将指定字符串中符合模式的内容替换成另一个字符串。patsubst指令可以帮助Makefile用户方便地完成多种替换操作,通常用于在Makefile

本文将详解Makefile中的一种常用指令——patsubst,包括patsubst指令的作用、语法规则、实例演示和常见用法,为你深入了解Makefile提供帮助。

patsubst(patsubst makefile)插图

1、patsubst指令概述

patsubst是Makefile中的一种模式替换命令,用于将指定字符串中符合模式的内容替换成另一个字符串。patsubst指令可以帮助Makefile用户方便地完成多种替换操作,通常用于在Makefile的规则中替换文件名、路径等内容。

2、patsubst指令语法规则

patsubst的语法规则如下:

$(patsubst pattern,replacement,text)

其中,pattern、replacement和text都是由一到多个字符或字符组成的字符串,含义分别如下:

  • pattern:定义要匹配的模式字符串,可以包含任意数量的通配符“%”,表示匹配任意长度任意子串。
  • replacement:定义替换的字符串,可以包含$(美元符号)和1~9(表示替换过程中的子串)。
  • text:要进行替换的字符串。

patsubst(patsubst makefile)插图2

3、patsubst指令实例演示

下面是一个简单的Makefile文件,演示patsubst指令的基本用法:

示例文件目录结构如下:

test/

├─lib/

│ ├─a.c

│ ├─b.c

│ └─c.c

├─main.c

└─Makefile

Makefile文件内容如下:

OBJ = $(patsubst %.c, %.o, $(wildcard lib/*.c)) main.omain: $(OBJ) gcc -o $@ $^%.o: %.c gcc -c $< -o $@

上述Makefile文件中,我们定义了两个变量:OBJ和main。其中,OBJ是一个通配符表达式,用于匹配所有lib目录下的.c源文件并将它们转换成.o目标文件。patsubst指令使用了两个通配符:%用于匹配源文件名,而%.o表示目标文件名。在$()中,我们使用了wildcard指令,用于匹配指定目录下的所有文件。

main是一个规则,依赖于OBJ,用于生成可执行文件main。在main规则中,我们使用了$()中的自动变量:$@表示目标文件名,$^表示所有依赖项的列表。

最后,我们定义了一个模式规则%.o: %.c,用于将.c文件转换成.o文件。其中,$<表示第一个依赖项的文件名。

patsubst(patsubst makefile)插图4

4、常见用法

patsubst指令常见的用法如下:

  • 将字符串中指定的字符替换为另一个字符。
  • $(patsubst /,%,$(PATH))

    上述示例中,我们使用/号将PATH中的路径分隔符替换成一个逗号。

  • 批量重命名文件。
  • OBJ := $(patsubst %.c,%.o,$(wildcard *.c))

    上述示例中,我们使用通配符匹配当前目录下的所有.c文件,将它们重命名为.o文件。

  • 在Makefile规则中使用patsubst指令。
  • SRCS := $(wildcard lib/*.c)OBJS := $(patsubst %.c,%.o,$(SRCS))%.o: %.c gcc -c $< -o $@main: $(OBJS) main.o gcc -o $@ $^

    上述示例中,我们将所有的源文件转换为目标文件,然后在Makefile规则中使用这些目标文件。

总之,patsubst指令在Makefile中发挥了极大的作用,它可以帮助我们完成多种模式匹配和替换操作,提高Makefile脚本的可读性和可维护性。


声明:易商讯尊重创作版权。本文信息搜集、整理自互联网,若有来源标记错误或侵犯您的合法权益,请联系我们。我们将及时纠正并删除相关讯息,非常感谢!

关键词: patsubst patsubst makefile
 
(文/小编)
免责声明
• 
本文patsubst(patsubst makefile)链接:http://www.esxun.cn/news/210545.html 。本文仅代表作者个人观点,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们,我们将在24小时内处理完毕。如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
 

Copyright © www.esxun.cn 易商讯ALL Right Reserved


冀ICP备2023038169号-3