Commit efa03a70174864c9949cb6c013d4c63049876743

Authored by Hu Chunming
1 parent 5686354a

优化makefile

src/Makefile
... ... @@ -8,25 +8,29 @@ BIN_DIR:=$(BUILD_DIR)/bin
8 8 export BUILD_DIR
9 9  
10 10 PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder
11   -
12   -DEPEND_DIR = $(PROJECT_ROOT)/bin
13   -SRC_ROOT = $(PROJECT_ROOT)/src
14 11 THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
  12 +export PROJECT_ROOT THIRDPARTY_ROOT
  13 +
  14 +CUDA_ROOT = /usr/local/cuda-11.1
  15 +export CUDA_ROOT
  16 +
  17 +FFMPEG_DIR = $(PROJECT_ROOT)/bin
15 18 SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release
16 19  
17 20 #编译器
18 21 CXX:=g++
19   -CXXFLAGS:=-std=c++11 -Wall -Wextra -Og -g
  22 +
20 23 INCS:=-I $(TOP_DIR) \
21 24 -I $(SPDLOG_ROOT)/include \
  25 + -I $(FFMPEG_DIR)/include \
22 26  
23 27 MACROS:=
24   -export CXX CXXFLAGS INCS MACROS
25 28  
26 29 # 链接器
27   -LD:=g++
28   -LDFLAGS:=
29   -LIBS:= -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \
  30 +LIBS:= -L $(SPDLOG_ROOT) -l:libspdlog.a \
  31 + -L $(FFMPEG_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
  32 +
  33 +export CXX INCS MACROS LIBS
30 34  
31 35 # 各个模块
32 36 MODULES:= nvdec gb28181 interface demo
... ...
src/demo/Makefile
... ... @@ -16,45 +16,26 @@ DEPFLAGS=-MT $@ -MMD -MP -MF $(DEP_DIR)/$*.d
16 16 TARGET:=/mnt/data/cmhu/FFNvDecoder/bin/lib/demo
17 17  
18 18  
19   -
20   -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder
21   -
22   -DEPEND_DIR = $(PROJECT_ROOT)/bin
23   -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
24   -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release
25 19 JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export
26 20  
27   -CUDA_ROOT = /usr/local/cuda-11.1
28   -
29   -LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
30   - -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
31   - -L $(SPDLOG_ROOT) -l:libspdlog.a \
32   - -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
33   - -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a
34   -
35   -
36 21 INCLUDE= -I $(TOP_DIR)/interface \
37 22 -I $(TOP_DIR)/nvdec \
38 23 -I $(TOP_DIR)/gb28181 \
39   - -I $(DEPEND_DIR)/include \
40 24 -I $(CUDA_ROOT)/include \
41 25 -I $(TOP_DIR)/common/inc \
42 26 -I $(TOP_DIR)/common/UtilNPP \
43 27 -I $(TOP_DIR)/ \
44   - -I $(SPDLOG_ROOT)/include \
45 28 -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \
46 29 -I $(JRTP_ROOT)/jthread/include/jthread
47 30  
48 31 LIBSPATH= -L $(BUILD_DIR)/interface/lib -l:interface.a \
49 32 -L $(BUILD_DIR)/nvdec/lib -l:nvdec.a \
50 33 -L $(BUILD_DIR)/gb28181/lib -l:gb28181.a \
51   - -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
52 34 -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
53   - -L $(SPDLOG_ROOT) -l:libspdlog.a \
54 35 -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
55 36 -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a
56 37  
57   -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
  38 +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(LIBSPATH) $(INCS) $(LIBS) $(MACROS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
58 39 # -DUNICODE -D_UNICODE
59 40  
60 41 # 默认最终目标
... ... @@ -74,8 +55,8 @@ $(LIB_DIR):
74 55 # 生成中间目标文件
75 56 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR)
76 57 @echo -e "\e[33m""Building object $@""\e[0m"
77   - @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<"
78   - $(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<
  58 + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) -o $@ $<"
  59 + $(CXX) -c $(DEPFLAGS) $(CXXFLAGS) -o $@ $<
79 60  
80 61 # 若没有obj目录则自动生成
81 62 $(OBJ_DIR):
... ...
src/gb28181/Makefile
... ... @@ -12,33 +12,21 @@ DEPS:=$(addprefix $(DEP_DIR)/, $(patsubst %.cpp, %.d,a $(SRCS)))
12 12 # 自动生成头文件依赖选项
13 13 DEPFLAGS=-MT $@ -MMD -MP -MF $(DEP_DIR)/$*.d
14 14  
15   -CUDA_ROOT = /usr/local/cuda-11.1
16   -
17   -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder
18   -
19   -DEPEND_DIR = $(PROJECT_ROOT)/bin
20   -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
21   -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release
22 15 JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export
23 16  
24   -
25   -INCLUDE= -I $(DEPEND_DIR)/include \
26   - -I $(CUDA_ROOT)/include \
27   - -I $(TOP_DIR)/common/inc \
  17 +INCLUDE= -I $(TOP_DIR)/common/inc \
28 18 -I $(TOP_DIR)/common/UtilNPP \
29 19 -I $(TOP_DIR)/ \
30   - -I $(SPDLOG_ROOT)/include \
  20 + -I $(CUDA_ROOT)/include \
31 21 -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \
32 22 -I $(JRTP_ROOT)/jthread/include/jthread
33 23  
34   -LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
  24 +LIBSPATH= -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
  25 + -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a \
35 26 -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
36   - -L $(SPDLOG_ROOT) -l:libspdlog.a \
37   - -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
38   - -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a
39 27  
40 28  
41   -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
  29 +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(INCS) $(LIBS) $(LIBSPATH) $(MACROS) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
42 30  
43 31 # 最终目标文件
44 32 TARGET:=$(LIB_DIR)/$(MODULE).a
... ... @@ -60,8 +48,8 @@ $(LIB_DIR):
60 48 # 生成中间目标文件
61 49 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR)
62 50 @echo -e "\e[33m""Building object $@""\e[0m"
63   - @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<"
64   - @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<
  51 + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) -o $@ $<"
  52 + @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) -o $@ $<
65 53  
66 54 # 若没有obj目录则自动生成
67 55 $(OBJ_DIR):
... ...
src/interface/Makefile
... ... @@ -12,41 +12,28 @@ DEPS:=$(addprefix $(DEP_DIR)/, $(patsubst %.cpp, %.d,a $(SRCS)))
12 12 # 自动生成头文件依赖选项
13 13 DEPFLAGS=-MT $@ -MMD -MP -MF $(DEP_DIR)/$*.d
14 14  
15   -
16   -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder
17   -
18   -DEPEND_DIR = $(PROJECT_ROOT)/bin
19   -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
20   -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release
21 15 JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export
22 16  
23   -
24   -INCLUDE= -I $(DEPEND_DIR)/include \
25   - -I $(CUDA_ROOT)/include \
26   - -I $(TOP_DIR)/common/inc \
  17 +INCLUDE= -I $(TOP_DIR)/common/inc \
27 18 -I $(TOP_DIR)/common/UtilNPP \
28 19 -I $(TOP_DIR)/ \
29   - -I $(SPDLOG_ROOT)/include \
30 20 -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \
31 21 -I $(JRTP_ROOT)/jthread/include/jthread \
32 22 -I $(TOP_DIR)/src/gb28181 \
33 23 -I $(TOP_DIR)/src/nvdec \
  24 + -I $(CUDA_ROOT)/include \
34 25  
35   -LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
  26 +LIBSPATH= -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
  27 + -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a \
36 28 -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
37   - -L $(SPDLOG_ROOT) -l:libspdlog.a \
38   - -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
39   - -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a
40 29  
41 30  
42   -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
  31 +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(LIBSPATH) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
43 32  
44 33  
45 34 # 最终目标文件
46 35 TARGET:=$(LIB_DIR)/$(MODULE).a
47 36  
48   -# MODULE_LIBS:=$(BUILD_DIR)/nvdec/lib/nvdec.a \
49   -# $(BUILD_DIR)/gb28181/lib/gb28181.a\
50 37  
51 38 # 默认最终目标
52 39 .PHONY:all
... ... @@ -65,9 +52,9 @@ $(LIB_DIR):
65 52 # 生成中间目标文件
66 53 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR)
67 54 @echo -e "\e[33m""Building object $@""\e[0m"
68   - @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<"
  55 + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBS) $(MACROS) -o $@ $<"
69 56 # @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $(MODULE_LIBS) $<
70   - @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<
  57 + @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBS) $(MACROS) -o $@ $<
71 58  
72 59 # 若没有obj目录则自动生成
73 60 $(OBJ_DIR):
... ...
src/nvdec/Makefile
... ... @@ -9,7 +9,7 @@ SRCS:=$(notdir $(wildcard $(SRC_DIR)/*.cpp))
9 9 OBJS:=$(addprefix $(OBJ_DIR)/, $(patsubst %.cpp, %.o, $(SRCS)))
10 10 DEPS:=$(addprefix $(DEP_DIR)/, $(patsubst %.cpp, %.d,a $(SRCS)))
11 11  
12   -CUDA_ROOT = /usr/local/cuda-11.1
  12 +
13 13 NVCC = $(CUDA_ROOT)/bin/nvcc
14 14  
15 15 # 自动生成头文件依赖选项
... ... @@ -21,35 +21,24 @@ DEFS = -DENABLE_DVPP_INTERFACE
21 21 TARGET:=$(LIB_DIR)/$(MODULE).a
22 22  
23 23  
24   -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder
25   -
26   -DEPEND_DIR = $(PROJECT_ROOT)/bin
27   -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
28   -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release
29 24 JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export
30 25  
31   -
32   -INCLUDE= -I $(DEPEND_DIR)/include \
33   - -I $(CUDA_ROOT)/include \
34   - -I $(TOP_DIR)/common/inc \
  26 +INCLUDE= -I $(TOP_DIR)/common/inc \
35 27 -I $(TOP_DIR)/common/UtilNPP \
36   - -I $(TOP_DIR)/ \
37   - -I $(SPDLOG_ROOT)/include \
  28 + -I $(TOP_DIR) \
  29 + -I $(CUDA_ROOT)/include \
38 30 -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \
39 31 -I $(JRTP_ROOT)/jthread/include/jthread
40 32  
41   -LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \
  33 +LIBSPATH= -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
  34 + -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a \
42 35 -L $(CUDA_ROOT)/lib64 -lcuda -lcudart -lnvcuvid -lcurand -lcublas -lnvjpeg \
43   - -L $(SPDLOG_ROOT) -l:libspdlog.a \
44   - -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \
45   - -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a
46   -
47 36  
48   -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
  37 +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(LIBSPATH) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings
49 38 # -DUNICODE -D_UNICODE
50 39  
51   -NFLAGS_LIB=-g -c -shared -Xcompiler -fPIC -Xcompiler -fvisibility=hidden
52   -NFLAGS = $(NFLAGS_LIB) $(INCLUDE) -std=c++11
  40 +NFLAGS_LIB=-g -c -shared -Xcompiler -fPIC
  41 +NFLAGS = $(NFLAGS_LIB) $(INCLUDE) $(LIBSPATH) -std=c++11
53 42  
54 43 CU_SOURCES:=$(notdir $(wildcard $(SRC_DIR)/*.cu))
55 44 CU_OBJS:=$(addprefix $(OBJ_DIR)/, $(patsubst %.cu, %.o, $(CU_SOURCES)))
... ... @@ -72,13 +61,13 @@ $(LIB_DIR):
72 61 # 生成中间目标文件
73 62 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR)
74 63 @echo -e "\e[33m""Building object $@""\e[0m"
75   - @echo "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<"
76   - @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<
  64 + @echo "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBS) $(MACROS) -o $@ $<"
  65 + @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBS) $(MACROS) -o $@ $<
77 66  
78 67 $(OBJ_DIR)%.o:$(SRC_DIR)/%.cu
79 68 @echo -e "\e[33m""Building object $@""\e[0m"
80   - @echo "$(NVCC) $(NFLAGS) -o $@ $<"
81   - $(NVCC) $(NFLAGS) -o $@ $<
  69 + @echo "$(NVCC) $(NFLAGS) $(INCS) $(LIBS) -o $@ $<"
  70 + $(NVCC) $(NFLAGS) $(INCS) $(LIBS) -o $@ $<
82 71  
83 72  
84 73 # 若没有obj目录则自动生成
... ...