CC = gcc
CFLAGS = -Wall -Wextra -O2
LDFLAGS = -lm

SRC_DIR = src
DIST_DIR = dist

SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(SRCS:$(SRC_DIR)/%.c=$(DIST_DIR)/%.o)
TARGET = $(DIST_DIR)/main

# 确保 dist 目录存在
MKDIR_P = mkdir -p

all: $(TARGET)

$(TARGET): $(OBJS)
	$(MKDIR_P) $(DIST_DIR)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

$(DIST_DIR)/%.o: $(SRC_DIR)/%.c
	$(MKDIR_P) $(DIST_DIR)
	$(CC) $(CFLAGS) -c $< -o $@

clean:
	rm -rf $(DIST_DIR)

.PHONY: all clean