makefile函数使用
时间: 2023-08-30 17:06:41 浏览: 53
Makefile中的函数可以在变量和规则中使用。下面是一些常用的Makefile函数:
- $(subst from,to,text):将text中的from替换成to。
- $(patsubst pattern,replacement,text):在text中查找符合pattern的字符串,并将其替换成replacement。
- $(strip string):删除string中的前导和尾随空格。
- $(shell command):执行shell命令并返回结果。
- $(wildcard pattern):返回符合pattern的所有文件名。
- $(foreach var,list,text):将list中的每个元素赋值给变量var,并将text中的变量替换成当前元素的值。
下面是一个例子:
```
SOURCES := $(wildcard *.c)
OBJECTS := $(patsubst %.c,%.o,$(SOURCES))
.PHONY: all clean
all: program
program: $(OBJECTS)
gcc -o $@ $^
%.o: %.c
gcc -c $< -o $@
clean:
rm -f program $(OBJECTS)
```
在这个例子中,wildcard函数用于获取所有的.c文件,patsubst函数用于将.c文件替换成.o文件,foreach函数用于遍历所有的.o文件。同时,我们还使用了shell命令来执行编译器。
相关问题
makefile函数
Makefile 中的函数允许您在规则中执行一些简单的文本操作和转换。以下是一些常见的 Makefile 函数:
1. `$(subst from,to,text)`: 在 `text` 中将所有的 `from` 替换为 `to`。
2. `$(patsubst pattern,replacement,text)`: 将 `text` 中符合 `pattern` 的部分替换为 `replacement`。
3. `$(wildcard pattern)`: 扩展为匹配 `pattern` 的所有文件名。
4. `$(addprefix prefix,names)`: 在 `names` 中的每个单词前添加 `prefix`。
5. `$(addsuffix suffix,names)`: 在 `names` 中的每个单词后添加 `suffix`。
除了上述函数之外,Makefile 还提供了其他的函数,如字符串处理函数(`$(strip)`, `$(shell)`, `$(sort)` 等)、文件名函数(`$(dir)`, `$(notdir)`, `$(basename)` 等)和条件函数(`$(if)`, `$(foreach)` 等)等。您可以根据自己的需求在 Makefile 中使用这些函数来实现更复杂的操作。
makefile foreach函数
在makefile中,foreach函数用于迭代一个列表中的每个元素,并对每个元素执行相同的操作。
语法:
$(foreach <var>,<list>,<text>)
其中:
- <var>:要定义的变量名称。
- <list>:要迭代的列表,可以是一个空格分隔的字符串列表,也可以是一个变量名。
- <text>:要执行的操作,可以包含变量引用和函数调用。
示例:
假设有一个变量SRC_DIRS,它包含若干目录名,可以这样定义:
SRC_DIRS := src1 src2 src3
我们想要把这些目录名逐个打印出来,可以使用foreach函数:
$(foreach dir,$(SRC_DIRS),echo $(dir);)
这里,<var>是dir,<list>是$(SRC_DIRS),<text>是echo $(dir);。
执行make命令后,输出如下:
echo src1;
src1
echo src2;
src2
echo src3;
src3
这表明foreach函数成功迭代了SRC_DIRS中的每个目录名,并对每个目录名执行了echo命令。