# 编译器设置 CC = gcc AR = ar CFLAGS = -g -Wall -I../.. # 源文件路径 LEXER_DIR = ./lexer PARSER_DIR = ./parser AST_DIR = ./parser/ast SYMTAB_DIR = ./parser/symtab # 源文件列表 SRCS = \ frontend.c \ $(LEXER_DIR)/lexer.c \ $(LEXER_DIR)/token.c \ $(PARSER_DIR)/parser.c \ $(PARSER_DIR)/ast.c \ $(AST_DIR)/block.c \ $(AST_DIR)/decl.c \ $(AST_DIR)/expr.c \ $(AST_DIR)/func.c \ $(AST_DIR)/program.c \ $(AST_DIR)/stmt.c \ $(AST_DIR)/term.c \ $(SYMTAB_DIR)/hashmap.c \ $(SYMTAB_DIR)/scope.c \ $(SYMTAB_DIR)/symtab.c \ # 生成目标文件列表 OBJS = $(SRCS:.c=.o) # 最终目标 TARGET = libfrontend.a all: $(TARGET) $(TARGET): $(OBJS) $(AR) rcs $@ $^ %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< clean: rm -f $(OBJS) $(TARGET) .PHONY: all clean