OBJS = $(patsubst %.c, $(OBJ_DIR)/%.o, $(notdir $(SRCS)))
时间: 2023-11-14 08:05:43 浏览: 65
这是一个 Makefile 中的语句,用于将源文件编译成目标文件。其中,$(SRCS) 是指所有的源文件,$(OBJ_DIR) 是指目标文件存放的目录。该语句通过 patsubst 函数将 $(SRCS) 中的所有 .c 文件转换成与之对应的 .o 文件,并通过 notdir 函数获取文件名,最终得到一个由所有目标文件路径组成的列表。这个列表被赋值给 OBJS 变量。
相关问题
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。
OBJS = $(SRCS:%.c=$(BUILD_DIR)/%.o) $(ASMS:%.S=$(BUILD_DIR)/%.o) 什么意思?
这是一个Makefile文件中的语句,其中:
- OBJS 是一个变量,用于存储编译生成的目标文件名;
- SRCS 是一个变量,用于存储源文件名(以.c结尾);
- ASMS 是一个变量,用于存储汇编文件名(以.S结尾);
- $(SRCS:%.c=$(BUILD_DIR)/%.o) 表示将SRCS中的每个.c文件名替换成$(BUILD_DIR)/%.o,其中$(BUILD_DIR)是一个变量,代表编译生成的目标文件存放路径;
- $(ASMS:%.S=$(BUILD_DIR)/%.o) 表示将ASMS中的每个.S文件名替换成$(BUILD_DIR)/%.o;
- 最终,OBJS变量的值就是将所有.c文件和.S文件编译生成的目标文件名。