Makefile 1.91 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++

INCLUDE= -I $(DEPEND_DIR)/include \
  -I $(CUDA_ROOT)/include \
  -I $(SRC_ROOT)/common/inc \
  -I $(SRC_ROOT)/common/UtilNPP \
  -I $(SRC_ROOT)\
  -I $(SPDLOG_ROOT)/include \
  -I $(SRC_ROOT)/gb28181 \
  -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \
  -I $(JRTP_ROOT)/jthread/include/jthread \
  -I $(CURL_ROOT)/include \

LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
   -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
   -L $(SPDLOG_ROOT) -l:libspdlog.a \
   -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
   -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a \
   -L $(CURL_ROOT)/lib -l:libcurl.a \

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)