Makefile
1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# 项目根目录
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)