makefile 中的$* 表示什么
时间: 2024-01-15 15:13:08 浏览: 30
在 Makefile 中,$* 表示目标文件中的文件名部分(不包含后缀)。比如,如果目标文件是 obj/foo.o,那么 $* 就表示 foo。$* 通常用于构建源文件和目标文件之间的依赖关系,例如:
```
# 假设源文件的后缀是 .c,目标文件的后缀是 .o
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 上面的规则等价于下面的规则
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $*.o
```
在上面的例子中,$< 表示第一个依赖文件,$@ 表示目标文件,$*.o 表示目标文件名(即 foo.o)。
相关问题
makefile中$(MAKE)什么意思
$(MAKE)是 makefile 中的一个变量,它表示 make 命令本身。在 makefile 中使用 $(MAKE) 的好处是,如果你想要在 makefile 中调用 make 命令来执行子目标,你不需要硬编码 make 命令的名称。相反,你可以使用 $(MAKE),这样如果你在不同的环境中使用不同的 make 版本或者不同的 make 命令名称,你的 makefile 仍然可以正确工作。
例如,如果你的 makefile 文件需要调用 make 命令来编译子目标,你可以使用以下语法:
```
subdir:
cd subdir && $(MAKE)
```
在这个例子中,$(MAKE) 表示 make 命令本身,它会在子目录 subdir 中执行。注意,make 命令执行时必须使用 Tab 键缩进。
makefile中以下几种自动变量的函义是什么? $* $+ $< $? $@ $^ $%
在Makefile中,以下是几种常用的自动变量及其含义:
1. $*:表示目标文件的主文件名(不包含后缀),例如,如果目标文件是test.o,则$*表示test。
2. $+:表示所有的依赖文件,以空格分隔。与$^不同的是,$+会保留重复的依赖文件。
3. $<:表示第一个依赖文件的名称。如果有多个依赖文件,$<只表示第一个。
4. $?: 表示所有比目标文件新的依赖文件列表,以空格分隔。
5. $@:表示目标文件的名称。
6. $^:表示所有的依赖文件列表,以空格分隔。
7. $%:仅适用于静态模式规则中,表示目标成员的成员名。