Makefile学习3 - foreach函数

一. 前言

        make中的foreach函数类似于Linux shell中的for语句,是一个循环函数。

二. foreach函数介绍

1. 语法

$(foreach VAR,LIST,TEXT)

2. 功能

        函数的工作过程:执行时把"LIST"中使用空格分隔的字符串依次取出赋值给变量"VAR",然后执行"TEXT"表达式。重复直到"LIST"的最后一个字符串。"TEXT"中的变量或函数引用在执行时才被展开,因此,如果在"TEXT"中存在对"VAR"的引用,那么"VAR"的值在每一次展开式将会是不同的值。如果存在变量或函数的引用,首先需要展开变量"VAR"和"LIST"的引用。

        函数参数"VAR"是一个局部的临时变量,它只在"foreach"函数的上下文有效,它的定义不影响其他部分定义的同名"VAR"变量的值。

3. 举例

# ls a/
aa  aaa  aaaa
# ls b/
b  bb  bbb
# ls c/
c  cc  ccc

find_files=$(wildcard $(dir)/*)
dirs:=a b c
files:=$(foreach dir,$(dirs),$(find_files))

结果:
files=a/aaa a/aaaa a/aa b/bbb b/bb b/b c/cc c/c c/ccc

        在该例中,依次取出dirs中a,b和c赋值给dir,每次赋值都运行依次$(wildcard $(dir)/*),这其中引用了dir变量,返回dir目录下的文件。最终files表示a,b和c目录下的文件。

三. 总结

        本文介绍了make的foreach函数的处理过程和基本用法。

猜你喜欢

转载自blog.csdn.net/to_be_better_wen/article/details/130038966