iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等
第二十一章 makefile基本语法(下)
本章内容对应视频讲解链接(在线观看):https://www.bilibili.com/video/BV1M7411m7wT?p=23
21.1 wildcard 函数
格式: $ (wildcard PATTENR)
功能: 展开指定的目录
举例:
在 /home/topeet/test 目录有一个 a.c 的 c 文件和一个 test的文件夹,在/home/topeet/test/test 文件夹下有一个 b.c的文件。
我们在当前目录下创建的 makefile 里面写下如下代码,echo 前面加了@ 符号,echo 这个命令就不显示:
执行结果:
我们得到了 ./a.c 和 ./test/b.c ,所以 wildcard 函数会把我们指定的 ./ 和 ./test/ 目录下的 c 文件展开。
21.2 notdir 函数
格式: $ (notdir $ (var) )
功能:去掉路径。
举例:
我们在上面的makefile 中加上以下代码,因为上面的例子我们得到的结果是 ./a.c 和 ./test/b.c 是有路径的,我们可以直接使用这个变量。
执行结果:
因为 notdir 函数可以去掉路径,所以 /a.c 和 ./test/b.c 去掉路径就得到了 a.c 和 b.c
21.3 dir 函数
格式: $(dir <names...>)
功能:取出目录,这里的目录指的是最后一个反斜杠/ 之前的部分,如果没有反斜杠/就返回当前。
举例:
我们在上面的例子中加入以下代码,如下图所示:
因为 var2 的值为 ./a.c 和 ./test/b.c ,所以取出目录就是 ./ 和 ./test ,如下图所示:
21.4 patsubst 函数
格式: $(patsubst 原文件,目标文件,文件列表)
功能:替换文件后缀
举例
我们在上面的例子中加入以下代码,如下图所示:
这个函数会把 var1 变量的a.c 和 b.c 的 .c 后缀替换为 .o ,如下图所示:
但是这个替换并不会改变当前目录下的后缀名。这个函数能做什么呢?我们可以用这个函数来替换我们的后缀名,进行其他的操作,这个函数都是会配合其他函数来用的。
替换我们可以使用这个函数,也可以使用 $(var:a=b) 这个格式来替换,var 代表我们要替换的文件的名字,a是原文件,b 是目标文件。我们来改一下上面的代码,如下图所示:
运行结果如下:
21.5 foreach 函数
格式:$(foreach <var>,<list>,<text>)
功能:把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再执行<text> 所包含的表达式。每一次 <text> 会返回一个字符串
举例
因为 var2 变量的值为 ./ 和 ./test ,所以先把 ./ 取出来放在 n 变量,然后再执行 wildcard 函数取出 ./test 和 ./test 下面的c文件的路径。所以执行结果如下图所示:
makefile基本语法规则介绍到这里基本就结束了,所讲的是后面裸机实验中所用到的一些函数,这些也是我们编写makefile最常用的。如果大家想深入了解,我们给大家提供了课外资料,在光盘里有《跟我一起写makefile》的pdf文件,大家可以了解下。