以下是一个使用`wildcard`函数的通用makefile示例:
```
# 编译器和编译选项
CC = gcc
CFLAGS = -Wall -Wextra -Werror
# 目标文件名和源文件名
TARGET = myprogram
SRC_DIR = src
SRC = $(wildcard $(SRC_DIR)/*.c)
OBJ = $(SRC:.c=.o)
# 默认目标
all: $(TARGET)
# 生成可执行文件
$(TARGET): $(OBJ)
$(CC) $(CFLAGS) $^ -o $@
# 生成目标文件
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 清理中间文件和可执行文件
clean:
rm -f $(OBJ) $(TARGET)
```
这个makefile与之前的示例类似,但是使用了`wildcard`函数来查找源文件。`wildcard`函数可以在指定的目录中查找符合特定模式的文件,并返回一个文件列表。在这个示例中,我们使用`$(wildcard $(SRC_DIR)/*.c)`来查找`src`目录下所有以`.c`结尾的文件。
使用`wildcard`函数可以使makefile更加灵活,因为它可以自动查找并包含新添加的源文件,而无需手动修改makefile。