2025-04-24 20:05:00 +08:00
|
|
|
|
# 定义编译器
|
2025-04-24 19:53:07 +08:00
|
|
|
|
CC = gcc
|
|
|
|
|
|
2025-04-24 20:05:00 +08:00
|
|
|
|
# 定义源文件目录
|
|
|
|
|
SRC_DIR = .
|
2025-04-24 19:53:07 +08:00
|
|
|
|
|
2025-04-24 20:05:00 +08:00
|
|
|
|
# 定义头文件目录
|
|
|
|
|
INC_DIR = .
|
2025-04-24 19:53:07 +08:00
|
|
|
|
|
2025-04-24 20:05:00 +08:00
|
|
|
|
# 定义目标文件目录
|
|
|
|
|
OBJ_DIR = obj
|
2025-04-24 19:53:07 +08:00
|
|
|
|
|
2025-04-24 20:05:00 +08:00
|
|
|
|
# 定义可执行文件名称
|
|
|
|
|
TARGET = main
|
2025-04-24 19:53:07 +08:00
|
|
|
|
|
2025-04-24 20:05:00 +08:00
|
|
|
|
# 定义源文件后缀
|
|
|
|
|
SRC_EXT = .c
|
2025-04-24 19:53:07 +08:00
|
|
|
|
|
2025-04-24 20:05:00 +08:00
|
|
|
|
# 定义目标文件后缀
|
|
|
|
|
OBJ_EXT = .o
|
|
|
|
|
|
|
|
|
|
# 定义源文件列表
|
|
|
|
|
SRC_FILES = \
|
2025-05-21 12:46:10 +08:00
|
|
|
|
heap.c \
|
2025-04-24 20:05:00 +08:00
|
|
|
|
main.c
|
|
|
|
|
|
|
|
|
|
# 使用正则表达式替换源文件后缀为.o,生成目标文件列表
|
|
|
|
|
OBJ_FILES = $(patsubst $(SRC_DIR)/%$(SRC_EXT), $(OBJ_DIR)/%$(OBJ_EXT), $(SRC_FILES))
|
|
|
|
|
|
|
|
|
|
# 定义编译选项
|
|
|
|
|
CFLAGS = -I$(INC_DIR) -Wall -Wextra -pedantic
|
|
|
|
|
|
|
|
|
|
# 默认目标,调用链接规则
|
|
|
|
|
all: $(TARGET)
|
|
|
|
|
|
|
|
|
|
# 链接规则,将所有目标文件链接成可执行文件
|
|
|
|
|
$(TARGET): $(OBJ_FILES)
|
|
|
|
|
$(CC) $(CFLAGS) $^ -o $@
|
|
|
|
|
|
|
|
|
|
# 编译规则,将源文件编译成目标文件
|
|
|
|
|
$(OBJ_DIR)/%$(OBJ_EXT): $(SRC_DIR)/%$(SRC_EXT)
|
|
|
|
|
@mkdir -p $(OBJ_DIR)
|
2025-04-24 19:53:07 +08:00
|
|
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
|
|
2025-04-24 20:05:00 +08:00
|
|
|
|
# 清理目标文件和可执行文件
|
2025-04-24 19:53:07 +08:00
|
|
|
|
clean:
|
2025-05-21 12:46:10 +08:00
|
|
|
|
rm -rf $(OBJ_DIR) $(TARGET)
|