# 通用的 kernel 风格的 makefile

# 可执行文件名
TARGET=your_executable_name

# 该目标文件所处目录(必须为相对路径)
OBJ_DIR=./obj

# 源文件所处目录(必须为相对路径)
SRC_DIR=./src

# 编译器
CC=gcc

# 获取所有符合条件的源文件
SRCS=$(wildcard $(SRC_DIR)/*.c)

# 将所有源文件转换为目标文件路径
OBJS=$(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRCS))

# 依赖 .c 文件与 .h 文件
DEPS=$(wildcard $(SRC_DIR)/*.h)

# 生成可执行文件
$(TARGET): $(OBJS)
    $(CC) -o $@ $^

# 生成目标文件
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(DEPS)
    $(CC) -c $< -o $@

# 清理目标文件与可执行文件
clean:
    rm -rf $(OBJ_DIR)/*.o $(TARGET)

.PHONY: clean