OBJS = $(SRCS:%.c=$(BUILD_DIR)/%.o) $(ASMS:%.S=$(BUILD_DIR)/%.o) 什么意思?
时间: 2024-04-26 20:24:20 浏览: 26
这是一个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。
OBJS = $(patsubst %.c,%.o, $(CFILES))
这行代码是一个 Makefile 规则中的变量定义,它使用了 Makefile 内置的函数 `patsubst`。这个函数的作用是将变量 `CFILES` 中所有以 `.c` 结尾的字符串替换成对应的以 `.o` 结尾的字符串,并将结果赋值给变量 `OBJS`。其中 `$()` 表示引用变量,`%` 表示通配符匹配任意字符,因此 `%.c` 匹配所有以 `.c` 结尾的字符串,`%.o` 匹配所有以 `.o` 结尾的字符串。最终的结果是 `OBJS` 变量包含了所有与 `CFILES` 变量中的 C 源文件对应的目标文件名。