| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- # ============================================================
- # Hikvision ISUP Client - Makefile
- # ============================================================
- # 项目名称
- PROJECT_NAME := hikvision-isup-client
- VERSION := 1.0.0
- # 编译器设置
- CC := gcc
- CFLAGS := -Wall -Wextra -std=c11 -g -O2
- CFLAGS += -D_GNU_SOURCE
- CFLAGS += -I./include
- # 库路径
- LIB_PATH := ./libs
- HCNETSDK_PATH ?= $(LIB_PATH)
- # 目标文件
- TARGET := $(PROJECT_NAME)
- # 源文件
- SRCDIR := src
- INCDIR := include
- SOURCES := $(wildcard $(SRCDIR)/*.c)
- OBJECTS := $(patsubst $(SRCDIR)/%.c, $(BUILD_DIR)/%.o, $(SOURCES))
- # 构建目录
- BUILD_DIR := build
- # HCNetSDK库文件(根据实际部署情况调整)
- # HCNETSDK_LIBS := -lhcnetsdk -lPlayCtrl -lHCPlayCtrl -lHCCommon -lHCWindowsComm -lHCCore
- # 如果没有实际SDK,使用模拟模式编译
- HCNETSDK_LIBS ?=
- # 其他依赖库
- OTHER_LIBS := -lpthread -ldl -lm
- # 最终链接库
- ALL_LIBS := $(HCNETSDK_LIBS) $(OTHER_LIBS)
- # 头文件依赖
- HEADERS := $(wildcard $(INCDIR)/*.h)
- # ============================================================
- # 编译目标
- # ============================================================
- .PHONY: all clean cleanbuild install test simulate help
- all: $(BUILD_DIR) $(TARGET)
- # 创建构建目录
- $(BUILD_DIR):
- mkdir -p $(BUILD_DIR)
- # 链接可执行文件
- $(TARGET): $(OBJECTS)
- $(CC) $(CFLAGS) -o $@ $^ $(ALL_LIBS)
- @echo "Build complete: $(TARGET)"
- @echo "Version: $(VERSION)"
- # 编译源文件
- $(BUILD_DIR)/%.o: $(SRCDIR)/%.c $(HEADERS)
- $(CC) $(CFLAGS) -c $< -o $@
- # 清理
- clean:
- rm -rf $(BUILD_DIR) $(TARGET)
- @echo "Clean complete"
- # 清理并重新编译
- cleanbuild: clean all
- @echo "Clean build complete"
- # 安装
- install: $(TARGET)
- install -d /usr/local/bin
- install -m 755 $(TARGET) /usr/local/bin/$(TARGET)
- @echo "Installed to /usr/local/bin/$(TARGET)"
- # 测试模式(不链接实际SDK)
- simulate: CFLAGS += -DHAVE_HIKVISION_SIMULATION
- simulate: clean $(BUILD_DIR) $(TARGET)
- @echo "Simulation build complete (no actual SDK required)"
- # 生成依赖文件
- deps: $(HEADERS)
- $(CC) $(CFLAGS) -MM $(SOURCES) > $(BUILD_DIR)/dependencies.mk
- # 帮助
- help:
- @echo "Hikvision ISUP Client Build System"
- @echo "=================================="
- @echo ""
- @echo "Targets:"
- @echo " all Build the project (default)"
- @echo " clean Remove build artifacts"
- @echo " cleanbuild Clean and rebuild"
- @echo " install Install to /usr/local/bin"
- @echo " simulate Build with simulation mode (no SDK needed)"
- @echo " test Run tests"
- @echo " help Show this help"
- @echo ""
- @echo "Variables:"
- @echo " HCNETSDK_PATH Path to HCNetSDK libraries (default: ./libs)"
- @echo ""
- @echo "Examples:"
- @echo " make # Build with SDK"
- @echo " make simulate # Build without SDK (simulation)"
- @echo " make HCNETSDK_PATH=/opt/hik # Build with custom SDK path"
- @echo " make install # Install to system"
- # 包含依赖文件
- -include $(BUILD_DIR)/dependencies.mk
- # ============================================================
- # 部署脚本
- # ============================================================
- deploy: all
- @echo "Deploying $(TARGET)..."
- ./scripts/deploy.sh $(TARGET)
- # ============================================================
- # 代码检查
- # ============================================================
- check:
- @echo "Running code checks..."
- @cppcheck --enable=all --suppress=missingIncludeSystem $(SRCDIR)/*.c 2>&1 || true
- @echo "Code check complete"
|