$@: 表示规则中的目标文件集
$<: 依赖目标中的第一个目标名字。如果依赖目标是以模式定义的,那么$<是符合模式的一系列的文件集。文件是一个一个取出的。
$?: 所有比目标新的依赖目标的集合。
$^: 所有依赖目标的集合。(去除重复)
$+: 与$^相似,区别是此变量不去除重复。
取得当前目录下源文件列表
SRCS=$(wildcard *.c)
目标文件列表
OBJS=$(SRCS:.c=.o)
取得文件名(不含目录)
SRCS=$(wildcard ~/test/*.c)
FILENAME=$(notdir $(SRCS))
伪目标
.PHONY:all
显示命令,不执行,调试用
make -n
目标文件生成在当前目录下
.c.o:
$(CC) -c $(CFLAGS) $(INCDIR) $<
目标文件生成在依赖文件所在目录下
.c.o:
$(CC) -c $(CFLAGS) $(INCDIR) $< -o $(<:.c=.o)
或
.c.o:
$(CC) -c $(CFLAGS) $(INCDIR) $< -o $*.o