$@ 表示目标文件
$^ 表示所有的依赖文件
$< 表示第一个依赖文件
$? 表示比目标还要新的依赖文件列表
单一C语言编译:
#set a name as compile target
TARGET=main
CC=gcc
CFLAGS= -c -Wall
LDFLAGS=
SRCS=$(wildcard *.c)
OBJS=$(patsubst %.c,%.o,$(SRCS))
.PHONY: clean
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $^ $(LDFLAGS) -o $@
$(OBJS):%.o:%.c
$(CC) $(CFLAGS) $< -o $@
clean:
rm -f $(OBJS) $(TARGET)