代码拉取完成,页面将自动刷新
# 检测操作系统
ifeq ($(OS),Windows_NT)
# Windows 环境
RM = del /q /f
RMDIR = rmdir /s /q
MKDIR = if not exist "$(1)" mkdir $(1)
TARGET_EXT = .exe
else
# Linux/Unix 环境
RM = rm -f
RMDIR = rm -rf
MKDIR = mkdir -p $(1)
TARGET_EXT =
endif
# 编译器设置
CC = gcc
CFLAGS = -Iinc -Iui -Wall -Wextra
# 目录设置
SRC_DIR = src
UI_DIR = ui
OBJ_DIR = obj
# 源文件列表(自动获取src目录下所有.c文件 + main.c)
SRC_FILES = $(wildcard $(SRC_DIR)/*.c) $(wildcard $(UI_DIR)/*.c) main.c
# 目标文件列表(将.c替换为.o并添加obj目录前缀)
OBJ_FILES = $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(SRC_FILES)))
# 最终目标名称
TARGET = main$(TARGET_EXT)
# VPATH设置帮助make在不同目录查找源文件
VPATH = $(SRC_DIR):$(UI_DIR):.
# 默认目标
all: $(OBJ_DIR) $(TARGET)
# 链接可执行文件
$(TARGET): $(OBJ_FILES)
$(CC) $^ -o $@
# 编译规则(处理src目录和当前目录的.c文件)
$(OBJ_DIR)/%.o: %.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
# 创建目标目录
$(OBJ_DIR):
$(call MKDIR,$(OBJ_DIR))
# 清理构建产物
clean:
@echo "Cleaning build artifacts..."
@if "$(OBJ_DIR)" NEQ "" if exist "$(OBJ_DIR)" $(RMDIR) "$(OBJ_DIR)"
@if "$(TARGET)" NEQ "" if exist "$(TARGET)" $(RM) "$(TARGET)"
.PHONY: all clean
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。