# 编译器设置 CC = gcc CFLAGS = -Wall -Wextra -g -I../game_engine LDFLAGS = # 目录设置 ROOT_DIR := . BUILD_DIR := build ENGINE_DIR := ../game_engine # 手动指定源文件目录 SRC_DIRS = $(ROOT_DIR) \ $(ROOT_DIR)/test \ $(ROOT_DIR)/plantform \ $(ROOT_DIR)/plantform/win_term \ $(ENGINE_DIR) \ $(ENGINE_DIR)/components \ $(ENGINE_DIR)/events \ $(ENGINE_DIR)/physics \ $(ENGINE_DIR)/pynic_log \ $(ENGINE_DIR)/render \ $(ENGINE_DIR)/resources \ $(ENGINE_DIR)/timer \ $(ENGINE_DIR)/utils SRCS = $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) OBJS := $(patsubst $(ROOT_DIR)/%.c,$(BUILD_DIR)/core/%.o,$(filter $(ROOT_DIR)/%,$(SRCS))) OBJS += $(patsubst $(ENGINE_DIR)/%.c,$(BUILD_DIR)/engine/%.o,$(filter $(ENGINE_DIR)/%,$(SRCS))) TARGET = $(BUILD_DIR)/../game.exe $(TARGET): $(OBJS) $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) # 当前目录下的文件编译规则 $(BUILD_DIR)/core/%.o: $(ROOT_DIR)/%.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c $< -o $@ # 引擎目录下的文件编译规则 $(BUILD_DIR)/engine/%.o: $(ENGINE_DIR)/%.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c $< -o $@ $(BUILD_DIR): mkdir -p $(BUILD_DIR) debug: @echo "Source files:" @echo $(SRCS) @echo "Object files:" @echo $(OBJS) all: build build: $(TARGET) run: build ./$(TARGET) clean: rm -rf $(BUILD_DIR) .PHONY: all build run clean debug