要扩展Makefile以使用通配符,可以使用通配符规则来匹配多个文件。通配符规则使用通配符字符(如*)来匹配文件名中的任意字符。
下面是一个示例Makefile,展示了如何使用通配符来扩展:
# 定义源文件目录和目标文件目录
SRC_DIR := src
OBJ_DIR := obj
# 获取源文件列表
SRCS := $(wildcard $(SRC_DIR)/*.c)
# 根据源文件列表生成目标文件列表
OBJS := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS))
# 定义编译器和编译选项
CC := gcc
CFLAGS := -Wall -Iinclude
# 定义目标文件生成规则
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
# 定义默认目标
all: $(OBJS)
# 清理目标文件
clean:
rm -rf $(OBJ_DIR)/*.o
在上面的示例中,首先定义了源文件目录和目标文件目录。然后使用wildcard
函数获取源文件列表,该函数会将通配符展开为匹配的文件列表。接着使用patsubst
函数将源文件列表转换为目标文件列表,将源文件目录替换为目标文件目录,并将文件扩展名从.c
替换为.o
。
然后定义了编译器和编译选项。接下来定义了目标文件生成规则,使用了通配符%
来匹配文件名中的任意字符。该规则指定了如何将源文件编译为目标文件。
最后定义了默认目标all
,该目标依赖于所有的目标文件。通过运行make
命令,可以编译所有的目标文件。还定义了清理目标clean
,用于删除生成的目标文件。
这样,通过在源文件目录中添加新的源文件,Makefile会自动识别并编译新的目标文件。
领取专属 10元无门槛券
手把手带您无忧上云