72 lines
2.0 KiB
Makefile
72 lines
2.0 KiB
Makefile
# Makefile - V4L2 MMAP 取图 demo (OpenCV + CAN 收发)
|
|
#
|
|
# 用法:
|
|
# make # 编译
|
|
# make clean # 清理
|
|
# make run # 编译并运行 (取 100 帧)
|
|
# make capture # 编译并取 5 帧保存到 ./out
|
|
# make no-can # 同 capture, 但关闭 CAN 收发
|
|
#
|
|
# 说明: 本 Makefile 在 Orin 上本地编译。
|
|
# CAN 模块依赖 include/zcan.h + lib/libusbcanfd.so + lib/libusb-1.0.so
|
|
# CAN 收发默认开启, 程序运行时加 --no-can 关闭
|
|
|
|
# ---- 工具链 ----
|
|
CXX ?= g++
|
|
CXXFLAGS ?= -std=c++17 -O3 -Wall -Wextra -Wno-unused-parameter -Wno-unused-result
|
|
LDFLAGS ?=
|
|
|
|
# ---- OpenCV 检测 (优先 opencv4, 回退 opencv) ----
|
|
OPENCV_PC := $(shell pkg-config --exists opencv4 && echo opencv4 || echo opencv)
|
|
OPENCV_CFLAGS := $(shell pkg-config --cflags $(OPENCV_PC))
|
|
OPENCV_LIBS := $(shell pkg-config --libs $(OPENCV_PC))
|
|
|
|
# ---- 本地头文件/库目录 (zcan.h, libusbcanfd.so, libusb-1.0.so) ----
|
|
INC_DIR := include
|
|
LIB_DIR := lib
|
|
IDIRS := -I$(INC_DIR) $(OPENCV_CFLAGS)
|
|
LDIRS := -L$(LIB_DIR)
|
|
RPATH := -Wl,-rpath,$$(pwd)/$(LIB_DIR)
|
|
|
|
CXXFLAGS += $(IDIRS)
|
|
LDLIBS += $(OPENCV_LIBS) -lm -lpthread -lusbcanfd -lusb-1.0
|
|
|
|
# ---- 目标与源文件 ----
|
|
BIN := vision-anti-pinch
|
|
SOURCES := main.cpp v4l2_capture.cpp can_comm.cpp
|
|
HEADERS := v4l2_capture.h can_comm.h $(INC_DIR)/zcan.h
|
|
OBJECTS := $(SOURCES:.cpp=.o)
|
|
|
|
# ---- 默认目标 ----
|
|
.PHONY: all clean run capture
|
|
|
|
all: $(BIN)
|
|
|
|
$(BIN): $(OBJECTS)
|
|
$(CXX) $(LDFLAGS) -o $@ $^ $(LDIRS) $(RPATH) $(LDLIBS)
|
|
|
|
# ---- 依赖规则 (头文件改动则全部重编) ----
|
|
$(OBJECTS): $(HEADERS)
|
|
|
|
%.o: %.cpp
|
|
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
|
|
|
# ---- 便捷目标 ----
|
|
run: $(BIN)
|
|
./$(BIN) -d /dev/video5 -n 100 -v
|
|
|
|
capture: $(BIN)
|
|
mkdir -p out
|
|
./$(BIN) -d /dev/video5 -n 100 -s 5 -t jpg -o ./out
|
|
|
|
# CAN 收发默认开启, 与 capture 相同
|
|
can: capture
|
|
|
|
# 关闭 CAN 收发的取图
|
|
no-can: $(BIN)
|
|
mkdir -p out
|
|
./$(BIN) -d /dev/video5 -n 100 -s 5 -t jpg -o ./out --no-can -v
|
|
|
|
clean:
|
|
rm -f $(OBJECTS) $(BIN)
|