# 设置变量 PROJECT_NAME := aigrammar SRC_DIR := src BIN_DIR := bin CONF_DIR := conf OUTPUT := $(BIN_DIR)/$(PROJECT_NAME) # Go 编译参数 GO := go GOFLAGS := -mod=readonly GOFILES := $(shell find $(SRC_DIR) -name '*.go') # 默认目标: 构建可执行文件 all: build # 编译代码 build: $(GOFILES) @mkdir -p $(BIN_DIR) $(GO) build -o $(OUTPUT) ./$(SRC_DIR)/... @echo "✅ Build complete: $(OUTPUT)" # 运行程序 run: build $(OUTPUT) --config=$(CONF_DIR)/config.toml # 清理编译生成的二进制文件 clean: rm -rf $(BIN_DIR)/$(PROJECT_NAME) @echo "🗑 Cleaned up $(BIN_DIR)/$(PROJECT_NAME)" # 格式化 Go 代码 fmt: $(GO) fmt ./$(SRC_DIR)/... # 整理 go.mod,清理无用依赖 tidy: $(GO) mod tidy # 显示帮助信息 help: @echo "Usage: make [target]" @echo "Targets:" @echo " all - 编译 (默认目标)" @echo " build - 编译 Go 代码" @echo " run - 运行编译后的程序" @echo " clean - 删除 bin 目录下生成的可执行文件" @echo " fmt - 格式化 Go 代码" @echo " tidy - 整理 go.mod 依赖"