嵌入式学习之Linux入门篇笔记——18,makefile基本语法(下)

配套视频学习链接:http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p=4&share_source=copy_web&vd_source=a0ef2c4953d33a9260910aaea45eaec8
 

1.wildcard 函数

格式:$(wildcard PATTENR)

功能:展开指定的目录

举例:

在/home/test 目录有一个 a.c 的 c 文件和一个 test 的文件夹,在/ home/test/test 文件

夹下有一个 b.c 的文件。

我们在当前目录下创建的 makefile 里面写下如下代码,echo 前面加了@符号,echo 这

个命令就不显示

执行结果:

我们得到了./a.c 和./test/b.c ,所以 wildcard 函数会把我们指定的./和./test/目录下的 c

文件展开

2. notdir 函数

格式:$(notdir $(var))

功能:去掉路径。

举例:

我们在上面的 makefile 中加上以下代码,因为上面的例子我们得到结果是./a.c

和./test/b.c 是有路径的,我们可以直接使用这个变量。

嵌入式学习之Linux入门篇笔记——18,makefile基本语法(下)_第1张图片

执行结果:

因为 notdir 函数可以去掉路径,所以/a.c 和./test/b.c 去掉路径就得到了 a.c 和 b.c

3. dir 函数

格式:$(dir )

功能:取出目录,这里的目录指的是最后一个反斜杠/之前的部分,如果没有反斜杠/就返回

当前。

举例:

我们在上面的例子中加入以下代码,如下图所示:

嵌入式学习之Linux入门篇笔记——18,makefile基本语法(下)_第2张图片

因为 var2 的值为./a.c 和./test/b.c,所以取出目录就是./和./test,如下图所示:

4. patsubst 函数

格式:$(patsubst 原文件,目标文件,文件列表 )

功能:替换文件后缀

举例

我们在上面的例子中加入以下代码,如下图所示:

嵌入式学习之Linux入门篇笔记——18,makefile基本语法(下)_第3张图片

这个函数会把 var1 变量的 a.c 和 b.c 的.c 后缀替换为.o,如下图所示:

替换我们可以使用这个函数,也可以使用$(var:a=b)这个格式来替换,我们来改一下上面

的代码,如下图所示:

嵌入式学习之Linux入门篇笔记——18,makefile基本语法(下)_第4张图片

运行结果如下:

5. foreach 函数

格式:$(foreach ,,)

功能:把参数中的单词逐一取出放到参数所指定的变量中,然后再执行

所包含的表达式。每一次会返回一个字符串

举例:

嵌入式学习之Linux入门篇笔记——18,makefile基本语法(下)_第5张图片

因为 var2 变量的值为./和./test,所以先把./取出来放在 n 变量,然后在执行 wildcard 函

数取出./和./test 下面的 c 文件的路径。所以执行结果如下图所示:

你可能感兴趣的:(嵌入式学习之Linux入门篇,linux,迅为电子,ubuntu,笔记,嵌入式,学习)