当前位置: 代码迷 >> 综合 >> 【Makefile 学习笔记】2. 函数篇
  详细解决方案

【Makefile 学习笔记】2. 函数篇

热度:77   发布时间:2023-11-14 20:53:28.0

【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}
  相关解决方案