37 lines
936 B
Makefile
37 lines
936 B
Makefile
CC = gcc
|
|
CFLAGS = -Wall -Wextra -g -I../parser -I../utils
|
|
|
|
OBJ_DIR = ../build/test
|
|
TARGET = $(OBJ_DIR)/test
|
|
SRCS = test.c ../parser/parser.c ../parser/lexer.c ../parser/ast.c ../parser/ast_printer.c ../parser/error.c ../utils/file.c ../utils/log.c
|
|
|
|
# 将源文件转换为目标文件列表
|
|
OBJS = $(SRCS:%.c=$(OBJ_DIR)/%.o)
|
|
|
|
# 创建目录的函数
|
|
create_dirs := $(shell if not exist "$(OBJ_DIR)" mkdir "$(OBJ_DIR)" && \
|
|
if not exist "$(OBJ_DIR)\..\parser" mkdir "$(OBJ_DIR)\..\parser" && \
|
|
if not exist "$(OBJ_DIR)\..\utils" mkdir "$(OBJ_DIR)\..\utils")
|
|
|
|
|
|
# 默认目标
|
|
all: $(TARGET)
|
|
|
|
# 链接目标文件生成可执行文件
|
|
$(TARGET): $(OBJS)
|
|
$(CC) $(OBJS) -o $(TARGET)
|
|
|
|
# 编译源文件为目标文件的规则
|
|
$(OBJ_DIR)/%.o: %.c
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# 清理规则
|
|
clean:
|
|
del /F /Q $(OBJ_DIR)\*.o
|
|
del /F /Q $(TARGET).exe
|
|
|
|
# 运行测试
|
|
test: $(TARGET)
|
|
$(TARGET)
|
|
|
|
.PHONY: all clean test |