CC = gcc CFLAGS = -Wall -MMD LDFLAGS = -lm SRCS = $(wildcard *.c) OBJS = $(SRCS:.c=.o) DEPS = $(OBJS:.o=.d) TARGET = a.out all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -include $(DEPS) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS) clean: rm -f $(OBJS) $(DEPS) $(TARGET)