linux_learn/learn/CAN/Makefile

87 lines
1.8 KiB
Makefile
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CAN 协议栈 — 顶层 Makefile
# 构建协议栈库和测试程序
#
# 交叉编译:
# export CC=aarch64-buildroot-linux-gnu-gcc
# make
#
# 本地测试PC + vcan
# make HOST=1
# ---- 交叉编译器设置 ----
# 参考创龙 RK3568 SDK 的工具链路径
CROSS_COMPILE ?= aarch64-buildroot-linux-gnu-
CC ?= $(CROSS_COMPILE)gcc
# ---- 构建选项 ----
CFLAGS = -Wall -g -O2 -std=gnu99
INCLUDES = -Iinclude
LDFLAGS =
LIBS = -lpthread -lrt
# 如果是本地编译(不用交叉工具链)
ifdef HOST
CC = gcc
CFLAGS += -DHOST_BUILD
endif
# ---- 目录 ----
SRC_DIR = src
INC_DIR = include
APP_DIR = app
BUILD_DIR = build
# ---- 源文件 ----
SRC = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(SRC:$(SRC_DIR)/%.c=$(BUILD_DIR)/%.o)
APP_SRC = $(APP_DIR)/test_protocol.c
APP_OBJ = $(BUILD_DIR)/test_protocol.o
# ---- 目标 ----
LIB_TARGET = $(BUILD_DIR)/libcanprot.a
APP_TARGET = $(BUILD_DIR)/can_test
.PHONY: all lib app clean install
all: lib app
lib: $(LIB_TARGET)
app: $(APP_TARGET)
# 确保 build 目录存在
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
# 编译协议栈库
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
$(CC) -c $< -o $@ $(INCLUDES) $(CFLAGS)
$(LIB_TARGET): $(OBJS)
$(AR) rcs $@ $^
# 编译测试程序
$(BUILD_DIR)/test_protocol.o: $(APP_DIR)/test_protocol.c | $(BUILD_DIR)
$(CC) -c $< -o $@ $(INCLUDES) $(CFLAGS)
$(APP_TARGET): $(APP_OBJ) $(LIB_TARGET)
$(CC) $(CFLAGS) -o $@ $(APP_OBJ) -L$(BUILD_DIR) -lcanprot $(LDFLAGS) $(LIBS)
# 清理
clean:
rm -rf $(BUILD_DIR)
# 安装到目标板
install:
cp $(APP_TARGET) $(PREFIX)/can_test
# 显示构建信息
info:
@echo "编译器: $(CC)"
@echo "CFLAGS: $(CFLAGS)"
@echo "源文件: $(SRC)"
@echo "目标文件: $(OBJS)"
@echo "库: $(LIB_TARGET)"
@echo "测试程序: $(APP_TARGET)"