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