makefile notdir用法
Makefile中的notdir函数用于从文件路径中提取出文件名。在Makefile中,我们经常需要处理文件路径,例如获取文件名、获取文件所在目录等,这时就可以使用notdir函数来实现。
notdir函数的语法如下:
()
其中names是一个文件路径列表,可以是变量名或者字符串。notdir函数将会去除每个文件路径中的目录部分,只返回文件名部分。
notdir函数的使用场景非常广泛。在实际的软件开发中,我们常常需要将源文件编译成目标文件,并将目标文件放在指定的目录中。此时,我们可以通过notdir函数提取源文件的文件名,然后将目标文件命名为相同的文件名,再指定目标文件的存放目录。
以下是一个示例Makefile,用来编译C源文件并将目标文件放在指定的目录中:
makefile
# 源文件列表
SRCS := src/file1.c src/file2.c src/file3.c
# 目标文件列表
OBJS := (patsubst %.c, obj/%.o, (notdir (SRCS)))
# 目标文件所在目录
OBJ_DIR := obj
# 编译参数
CFLAGS := -std=c99
# 目标文件编译规则
(OBJ_DIR)/%.o: src/%.c
mkdir -p (@D)
(CC) (CFLAGS) -o @ -c <
# 构建目标
all: (OBJS)
# 清除目标文件
clean:
rm -rf (OBJ_DIR)
.PHONY: all clean
在上面的示例中,SRCS变量定义了源文件列表,包含了三个C源文件。通过notdir函数,我们将文件路径中的目录部分去除,得到了文件名列表file1.c、file2.c和file3.c。然后,我们使用patsubst函数将文件名列表中的.c后缀替换为.o后缀,并加上了目标文件所在目录前缀obj/,得到目标文件列表obj/file1.o、obj/file2.o和obj/file3.o。
makefile phony
在目标规则中,我们指定了如何将C源文件编译成目标文件。通过mkdir -p命令来创建目标文件所在的目录,然后使用(CC)命令编译源文件,生成目标文件。
最后,我们定义了一个名为all的目标,依赖于(OBJS)变量,即目标文件列表。当我们执行make命令时,会按照依赖关系自动构建目标文件。
另外,我们还定义了一个clean目标,用于清除目标文件。通过执行rm -rf命令,将目标文件所在的目录完全删除。
通过使用notdir函数,我们可以轻松地从文件路径中提取出文件名,方便地进行文件操作和处理。在Makefile中,notdir函数是非常有用的一个函数,帮助我们简化了文件路径操作的过程。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论