46 lines
874 B
Makefile
46 lines
874 B
Makefile
# 编译器设置
|
|
CC := gcc
|
|
CFLAGS := -Wall -Wextra -O2 -I./include
|
|
LDFLAGS := -lm
|
|
LIBS :=
|
|
|
|
# 目录设置
|
|
SRC_DIR := src
|
|
BUILD_DIR := build
|
|
DIST_DIR := dist
|
|
INCLUDE_DIR := include
|
|
|
|
# 获取源文件和目标文件
|
|
SOURCES := $(wildcard $(SRC_DIR)/*.c)
|
|
OBJECTS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES))
|
|
DEPS := $(OBJECTS:.o=.d) # 自动生成的依赖文件
|
|
|
|
# 最终可执行文件
|
|
TARGET := $(DIST_DIR)/main
|
|
|
|
# 默认目标
|
|
all: $(TARGET)
|
|
|
|
# 链接可执行文件
|
|
$(TARGET): $(OBJECTS) | $(DIST_DIR)
|
|
$(CC) $(LDFLAGS) $^ -o $@ $(LIBS)
|
|
|
|
# 编译源文件并生成依赖
|
|
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
|
|
$(CC) $(CFLAGS) -MMD -MP -c $< -o $@
|
|
|
|
# 创建必要的目录
|
|
$(BUILD_DIR):
|
|
mkdir -p $@
|
|
|
|
$(DIST_DIR):
|
|
mkdir -p $@
|
|
|
|
# 包含自动生成的依赖
|
|
-include $(DEPS)
|
|
|
|
# 清理构建
|
|
clean:
|
|
rm -rf $(BUILD_DIR) $(TARGET)
|
|
|
|
.PHONY: all clean |