Makefile中foreach函数的应用理解

简介: Makefile中foreach函数的应用理解

前言

foreach 是用来完成循环操作的函数。Makefile 中的 foreach 函数几乎是仿照于 Unix 标准 Shell(/bin /sh)中的 for 语句,或是 C-Shell(/bin/csh)中的 foreach 语句而构建的。

1 函数作用

主要用来循环处理文件列表,列出符合条件的文件目录名。

2 函数语法

$(foreach <var>, <list>, <text>)

(1) var:临时变量;

(2) list:以空格隔开的文件列表,每一次取一个文件名单词赋值为变量 var;

(3) text:对 var 变量进行操作(一般使用 var 变量,不然没意义),每次操作结果都会以空格隔开,最后返回空格隔开的列表。

函数解释:把参数 <list> 中的单词逐一取出放到参数 <var> 所指定的变量中,然后再执行 <text> 所包含的表达式。每一次 <text> 会返回一个字符串,循环过程中,<text> 表达式所返回的每个字符串会以空格分隔。最后当整个循环结束时,<text> 所返回的每个字符串所组成的整个字符串(以空格分隔)将会是 foreach 函数的返回值。

所以,<var> 最好是一个变量名,<list> 可以是一个表达式,而 <text> 中一般会使用 <var> 这个参数来依次枚举 <list> 中的单词。

3 函数实例

这里我创建了 source_dir 目录和三个子目录: gpio、irq、usart。三个子目录中都有对应的 .c 文件。


62abf511ace049548c12d2b66fca2762.png


$(foreach source, $(SOURCE_DIR), $(wildcard $(source)/*.c))

上面的例子中,$(SOURCE_DIR) 中的单词会被挨个取出,并存到变量 source 中,(wildcard $(source)/*.c) 每次根据 $(source)/*.c 计算出一个值,这些值以空格分隔,最后作为 foreach 函数的返回值。

本例程的最终目的,是将各子目录下的 .c 文件(可编译文件)列举出来。

注意,foreach 中的 <var> 参数是一个临时的局部变量,foreach 函数执行完后,参数 <var> 的变量将不再作用,其作用域只在 foreach 函数当中。

总结

以上就是对 Makefile 中 foreach 函数的举例说明。


相关文章
|
2月前
|
Shell
Makefile函数的使用(1)
Makefile函数的使用(1)
10 0
|
2月前
|
算法 编译器 开发者
CMake参数解析cmake_parse_arguments 的参数用法
CMake参数解析cmake_parse_arguments 的参数用法
51 2
|
2月前
CMake中FindPackageHandleStandardArgs.cmake文件的作用和用法
CMake中FindPackageHandleStandardArgs.cmake文件的作用和用法
26 2
|
2月前
|
存储
CMake中遍历元素的技巧:foreach命令详解
CMake中遍历元素的技巧:foreach命令详解
59 1
|
4月前
|
前端开发 JavaScript
你不知道的forEach函数
你不知道的forEach函数
|
11月前
|
Linux C语言
多文件目录Makefile的写法
多文件目录Makefile的写法
|
JavaScript 索引
js中forEach的用法、forEach如何跳出循环、forEach与for之间的区别
js中forEach的用法、forEach如何跳出循环、forEach与for之间的区别