OBJS := $(addprefix $(BUILD)/, $(SRCS:.c=.o))
时间: 2024-02-18 17:44:05 浏览: 118
这是一个 Makefile 中的一行代码,它定义了一个变量 OBJS,其中包含了 $(BUILD) 目录下所有 .c 文件编译后生成的 .o 文件。
具体来说,$(SRCS:.c=.o) 表示将 $(SRCS) 变量中所有以 .c 结尾的文件名替换为以 .o 结尾的文件名。然后,addprefix 函数将 $(BUILD)/ 作为前缀添加到每个 .o 文件名前面,最终形成了一个完整的文件路径列表。
例如,若 SRCS 变量包含了 main.c 和 utils.c,BUILD 变量为 build,则 OBJS 变量将会被赋值为 build/main.o build/utils.o。
相关问题
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文件编译生成的目标文件名。
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。
阅读全文