makefile常用相关函数

makefile中函数的用法与变量类似,变量的用法是在变量前面加上$,函数的用法一样,也是使用$开头,$之后加一个括号,括号中的第一个参数是函数名,后面紧跟此函数需要的参数,用逗号分隔。下面介绍几个常用的函数。

wildcard函数

  • 参数: 一个正则表达式

wildcard的中文意思是通配符,它的功能类似于正则表达式,用于展开一列所有符合其参数描述的文件名,文件之间用空格分割。

实例:

1
SOURCE=$(wildcard *.cpp)

此时SOURCE的值为所有的以.cpp为后缀的文件集合,以空格隔开。

patsubst函数

其功能是一个匹配替换的函数(pattern substitute)。

  • 参数:第一个是需要匹配的样式,第二个是表示用什么替换它,第三个被处理的以空格隔开的字符串。

实例:

1
TARGET = $(patsubst *.cpp, *.o, $(SOURCE))

TARGET表示与SOURCE中同名的目标文件.

$@,$<, $^

上述几个变量的含义:

  • $@ 表示目标的文件名
  • $< 表示依赖中的第一个文件名
  • $^ 表示依赖中所有的文件名

实例:

1
all: library.cpp main.cpp

其中$@标识all, $<表示library.cpp ,$^表示library.cpp main.cpp