当前位置: 首页 > 工具软件 > GNU DDD > 使用案例 >

GNU-make::文件名处理函数

柴瀚昂
2023-12-01

在makefile中常常要处理文件名(目录 + 文件), 掌握一些简单的函数可以极大简化这个过程.

模式1: filename -> "dir""notdir"

1) 取出目录名(with slash):$(dir <names...>)

FILENAME1 := /tmp/111/222/333/444.c
FILENAME2 := ./aaa/bbb/ccc/ddd.txt
FILENAMES  := $(FILENAME1) $(FILENAME2)

DIRS  := $(dir $(FILENAMES))

@echo DIRS is \"$(DIRS)\"

2) 取文件名:$(notdir <names...>)

FILENAME1 := /tmp/111/222/333/444.c
FILENAME2 := ./aaa/bbb/ccc/ddd.txt
FILENAMES  := $(FILENAME1) $(FILENAME2)

NAMES := $(notdir $(FILENAMES))

@echo NAMES is \"$(NAMES)\"

模式2:filename -> "basename""suffix"

1) 取基名:$(basename <names...>)

FILENAME1 := /tmp/111/222/333/444.c
FILENAME2 := ./aaa/bbb/ccc/ddd.txt
FILENAMES  := $(FILENAME1) $(FILENAME2)

BASENAMES := $(basename $(FILENAMES))

@echo BASENAMES is \"$(BASENAMES)\"

2) 取后缀:$(suffix <names...>)

FILENAME1 := /tmp/111/222/333/444.c
FILENAME2 := ./aaa/bbb/ccc/ddd.txt
FILENAMES  := $(FILENAME1) $(FILENAME2)

SUFFIXS   := $(suffix $(FILENAMES))

@echo SUFFIXS is \"$(SUFFIXS)\"

3) 添加前缀:$(addprefix <prefix>,<names...>)

NAME1 := a
NAME2 := b
NAME3 := c
NAMES := $(NAME1) $(NAME2) $(NAME3)

PREFIX_NAMES:=$(addprefix src/, $(NAMES))

@echo PREFIX_NAMES is \"$(PREFIX_NAMES)\"

4) 添加后缀:$(addsuffix <prefix>,<names...>)

NAME1 := a
NAME2 := b
NAME3 := c
NAMES := $(NAME1) $(NAME2) $(NAME3)

NAME_SUFFIXS:=$(addsuffix .c, $(NAMES))

@echo NAME_SUFFIXS is \"$(NAME_SUFFIXS)\"

 类似资料: