【Makefile 学习笔记】2. 函数篇
学习自《专业嵌入式软件开发:全面走向高质高效编程》
abspath
- 功能:将路径转换为绝对路径
- 形式:
${abspath 路径}
FILE_PATH = ${abspath ./main.c}
addprefix
- 功能:给文件或者其他增加前缀
- 形式:
${addprefix 前缀,文件}
FILE_NAME = ${addprefix src_,./main.c}
addsuffix
- 功能:给文件或者其他增加后缀
- 形式:
${addsuffix 后缀,文件}
FILE_NAME = ${addsuffix .o,main}
eval
- 功能:再次解析 text 语句
- 形式:
${eval _text_}
sources = foo.c main.c bar.c baz.s ugh.h
${eval sources := ${filter %.c %.s,${sources}}}
filter
- 功能:从名字列表中根据参数匹配符合要求的名字列表并返回
- 形式:
${filter 参数,名字列表}
C_ASM_SRCS = ${filter %.c %s, ${SRCS}}
filter-out
- 功能:与filter相反,从名字列表中根据参数匹配滤除相应名字,并将剩余名字列表返回
- 形式:
${filter-out 参数,名字列表}
ASM_SRCS = ${filter-out %.c, ${SRCS}}
notdir
- 功能:从文件路径中抽取文件名并返回
- 形式:
${notdir _文件路径_ }
FILE_NAME = ${nodir code/foo/src/foo.c code/bar/src/bar.c}
patsubst
- 功能:将名字列表 text 中符合 pattern 模式的名字替换为 replacement, 并将替换后的名字列表返回。
- 形式:
${patsubst _pattern_, _replacement_, _text_}
mixed = foo.c main.c bar.c
objects := ${patsubst %.c,%.o,${mixed}}
realpath
- 功能:获取 names 所对应的真实路径名
- 形式:
${realpath _names_}
ROOT := ${realpath ./..}
strip
- 功能:清除 string 中多余的空格
- 形式:
${strip _string_}
original = foo.c bar.c
stripped := ${strip ${original}}
wildcard
- 功能:通过该函数, 可以得到当前工作目录中满足 pattern 模式的文件或目录名列表
- 形式:
${wildcard _pattern_}
SRCS = ${wildcard *.c}