msg_udp_ctrl/Makefile

66 lines
1.7 KiB
Makefile
Raw Normal View History

2025-05-29 23:08:59 +08:00
# ================================================================
# 使用说明:
# 1. 确保交叉编译工具链路径正确
# 2. 确保源码放在src目录头文件放在inc目录
# 3. 命令行执行:
# make # 编译
# make clean # 清理
# ================================================================
# TODO 交叉编译器路径配置
TOOLCHAIN_DIR ?= /home/qieyuan/bupt_project/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu
CROSS_COMPILE ?= $(TOOLCHAIN_DIR)/aarch64-linux-gnu-
# 编译配置
CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar
STRIP = $(CROSS_COMPILE)strip
# 编译输出目录配置
BUILD_DIR = build
TARGET = $(BUILD_DIR)/msg_udp_ctrl.out
# 代码目录配置
SRC_DIR = src
INC_DIR = inc
OBJ_DIR = $(BUILD_DIR)/obj
# 编译器选项配置
CFLAGS = -O2 -Wall -Werror -g
CFLAGS += -I$(INC_DIR) # 头文件搜索路径
CFLAGS += -MMD -MP # 自动生成依赖关系
CFLAGS += -fPIC # 位置无关代码
LDFLAGS = -lpthread -lrt # 多线程与mmap拓展库
# UDP专用宏定义
# DEFINES = -DUSE_UDP_OPTIMIZE=1
# CFLAGS += $(DEFINES)
# 自动收集源文件
SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
DEPS = $(OBJS:.o=.d) # 依赖
# ======================== 构建规则 ===============================
.PHONY: all clean
all: $(TARGET)
# 主目标链接
$(TARGET): $(OBJS)
@echo "Linking $@"
@mkdir -p $(@D) # 创建目标目录
$(CC) $^ -o $@ $(LDFLAGS)
# 编译规则
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@echo "Compiling $<"
@mkdir -p $(@D) # 创建对象目录
$(CC) $(CFLAGS) -c $< -o $@
# 包含自动生成的依赖关系
-include $(DEPS)
clean:
rm -rf $(BUILD_DIR)