makefile中的wildcard

patsubst函数

1、简介

patsubst是GNU Make中的一个函数,用于将模式匹配的字符串替换为指定的字符串,它通常与$(wildcard)函数结合使用,以便根据文件名模式生成新的文件名。

makefile中的wildcard

2、语法

$(patsubst pattern,replacement,word)

pattern:要匹配的模式字符串。

replacement:替换后的字符串。

word:要进行模式匹配的字符串。

3、示例

假设我们有一个名为src/main.c的源文件和一个名为src/main.cpp的头文件,我们希望在编译过程中将所有的.c文件替换为.cpp,并将所有的.h文件替换为.hpp,可以使用以下Makefile:

makefile中的wildcard

CPPFILES = $(patsubst %.c,%.cpp,$(wildcard src/*.c))
HPPFILES = $(patsubst %.h,%.hpp,$(wildcard src/*.h))
all: $(CPPFILES) $(HPPFILES)
$(CPPFILES): %.o: %.cpp
    g++ -c $< -o $@
$(HPPFILES): %.o: %.hpp
    g++ -c $< -o $@

4、注意事项

$(patsubst)函数会自动删除多余的分隔符,如果模式字符串为*/,则./test/test.txt/将被替换为./test/test.txt

如果模式字符串中包含通配符(*),需要使用两个连续的百分号(%%)来表示一个字面百分号(%)。%.c将被替换为.c,而%%.c将被替换为一个字面百分号(%)加上一个字符.c,即.%,c,这可能会导致一些奇怪的结果,因此在使用时要特别小心。

wildcard函数

1、简介

wildcard是GNU Make中的一个函数,用于根据文件名模式生成文件名列表,它类似于Unix系统中的ls命令。

2、语法

makefile中的wildcard

$(wildcard pattern)

pattern:要匹配的文件名模式。

3、示例

假设我们有一个名为src/的目录,其中包含多个文件,我们希望获取该目录下的所有文件名,可以使用以下Makefile:

SRC_FILES := $(wildcard src/*)

4、注意事项

wildcard函数返回的文件名列表不包含路径信息,只包含文件名,如果需要完整的路径信息,可以将结果传递给其他函数,如dirnamepathname,以生成完整的路径。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/271684.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-01-28 07:58
Next 2024-01-28 08:02

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入