Makefile 1.48 KB
# 项目根目录
TOP_DIR:=$(patsubst %/, %, $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
export TOP_DIR

# 各项目录
BUILD_DIR:=$(TOP_DIR)/build
BIN_DIR:=$(BUILD_DIR)/bin
export BUILD_DIR

PROJECT_ROOT= /home/huchunming/FFNvDecoder
THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
export PROJECT_ROOT THIRDPARTY_ROOT

CUDA_ROOT = /usr/local/cuda-11.1
export CUDA_ROOT

FFMPEG_DIR = $(PROJECT_ROOT)/bin
SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release

#编译器
CXX:=g++

INCS:=-I $(TOP_DIR) \
		-I $(SPDLOG_ROOT)/include \
		-I $(FFMPEG_DIR)/include \

# 链接器
LIBS:= -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \
		-L $(FFMPEG_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \

export CXX INCS MACROS LIBS

MACROS:= -DUSE_DVPP

# 各个模块
MODULES:= dvpp interface demo

# 各个模块对应的库
# MODULE_LIBS:=$(BUILD_DIR)/nvdec/lib/nvdec.a\
# 			$(BUILD_DIR)/nvdec/lib/gb28181.a\
# 			$(BUILD_DIR)/interface/lib/interface.a\

# 最终目标文件
TARGET:=$(BIN_DIR)/test

# 默认最终目标
.PHONY:all
all:$(TARGET)

# 最终目标依赖关系
$(TARGET):FORCE | $(BIN_DIR)
	@for n in $(MODULES); do make -s -f $(TOP_DIR)/$$n/Makefile MODULE=$$n || exit "$$?"; done
# @echo -e "\e[32m""Linking executable $(TARGET)""\e[0m"
#@$(LD) $(LDFLAGS) -o $@ $(MODULE_LIBS) $(LIBS)

# 若没有bin目录则自动生成
$(BIN_DIR):
	@mkdir -p $@

# 强制执行命令
.PHONY:FORCE
FORCE:

# make clean直接删除整个build目录
.PHONY:clean
clean:
	@rm -rf $(BUILD_DIR)