$(BUILD)/%.d: ; include $(wildcard $(patsubst %, $(BUILD)/%.d, $(basename $(SRCS))))
时间: 2023-11-22 07:04:37 浏览: 34
这是一个 Makefile 中的自动生成依赖关系的规则。它的作用是根据源代码文件的变化,自动更新相关目标文件的依赖关系。
具体来说,它会根据 $(SRCS) 变量中指定的源代码文件列表,生成对应的依赖关系文件,并包含在 Makefile 中。这样在后续编译过程中,如果源代码文件发生了变化,Make 就会自动重新生成依赖关系,并重新编译相应的目标文件。
其中 $(BUILD) 是目标文件的输出目录,%.d 表示所有的依赖关系文件都位于该目录下,并以源代码文件名为前缀。include $(wildcard $(patsubst %, $(BUILD)/%.d, $(basename $(SRCS)))) 则是将所有的依赖关系文件包含进来。
相关问题
SRCS := $(wildcard *.c) OBJS := $(patsubst %.c, %.o, $(SRCS))
这是一个 Makefile 文件的两行代码,其中:
- `SRCS := $(wildcard *.c)` 表示将当前目录中所有的 .c 文件名列表赋值给 SRCS 变量。
- `OBJS := $(patsubst %.c, %.o, $(SRCS))` 表示将 SRCS 变量中的 .c 文件名列表分别替换成 .o 文件名列表,并赋值给 OBJS 变量。其中,`$(patsubst %.c, %.o, $(SRCS))` 表示将 SRCS 变量中的每个 .c 文件名都替换成对应的 .o 文件名。`$(patsubst pattern,replacement,text)` 是 Makefile 中的一个函数,表示将 text 中的所有 pattern 替换成 replacement。
src = $(wildcard ./*.c) #obj = $(patsubst %.c, %.o, $(src)) obj = $(src:%.c=%.o)
这是一个Makefile中的变量定义,用于自动化编译C程序。其中,$(wildcard ./*.c)是通配符函数,用于查找当前目录下所有以.c为后缀名的文件,并将文件名列表存储在变量src中。$(patsubst %.c, %.o, $(src))是模式替换函数,用于将src变量中的.c文件替换成.o文件,并将替换后的文件名列表存储在变量obj中。另一种写法$(src:%.c=%.o)是变量替换函数,用于将变量src中的.c文件替换成.o文件,并将替换后的文件名列表存储在变量obj中。最终,变量obj中存储了当前目录下所有以.c为后缀名的文件所对应的.o文件名列表,这些.o文件可以作为编译目标文件的依赖项。