From efa03a70174864c9949cb6c013d4c63049876743 Mon Sep 17 00:00:00 2001 From: fiss <2657262686@qq.com> Date: Tue, 21 Mar 2023 03:44:18 -0400 Subject: [PATCH] 优化makefile --- src/Makefile | 20 ++++++++++++-------- src/demo/Makefile | 25 +++---------------------- src/gb28181/Makefile | 26 +++++++------------------- src/interface/Makefile | 27 +++++++-------------------- src/nvdec/Makefile | 37 +++++++++++++------------------------ 5 files changed, 42 insertions(+), 93 deletions(-) diff --git a/src/Makefile b/src/Makefile index 994ba2a..95539c0 100644 --- a/src/Makefile +++ b/src/Makefile @@ -8,25 +8,29 @@ BIN_DIR:=$(BUILD_DIR)/bin export BUILD_DIR PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder - -DEPEND_DIR = $(PROJECT_ROOT)/bin -SRC_ROOT = $(PROJECT_ROOT)/src 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++ -CXXFLAGS:=-std=c++11 -Wall -Wextra -Og -g + INCS:=-I $(TOP_DIR) \ -I $(SPDLOG_ROOT)/include \ + -I $(FFMPEG_DIR)/include \ MACROS:= -export CXX CXXFLAGS INCS MACROS # 链接器 -LD:=g++ -LDFLAGS:= -LIBS:= -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \ +LIBS:= -L $(SPDLOG_ROOT) -l:libspdlog.a \ + -L $(FFMPEG_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ + +export CXX INCS MACROS LIBS # 各个模块 MODULES:= nvdec gb28181 interface demo diff --git a/src/demo/Makefile b/src/demo/Makefile index e608a63..91b0cac 100644 --- a/src/demo/Makefile +++ b/src/demo/Makefile @@ -16,45 +16,26 @@ DEPFLAGS=-MT $@ -MMD -MP -MF $(DEP_DIR)/$*.d TARGET:=/mnt/data/cmhu/FFNvDecoder/bin/lib/demo - -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder - -DEPEND_DIR = $(PROJECT_ROOT)/bin -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export -CUDA_ROOT = /usr/local/cuda-11.1 - -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 - - INCLUDE= -I $(TOP_DIR)/interface \ -I $(TOP_DIR)/nvdec \ -I $(TOP_DIR)/gb28181 \ - -I $(DEPEND_DIR)/include \ -I $(CUDA_ROOT)/include \ -I $(TOP_DIR)/common/inc \ -I $(TOP_DIR)/common/UtilNPP \ -I $(TOP_DIR)/ \ - -I $(SPDLOG_ROOT)/include \ -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \ -I $(JRTP_ROOT)/jthread/include/jthread LIBSPATH= -L $(BUILD_DIR)/interface/lib -l:interface.a \ -L $(BUILD_DIR)/nvdec/lib -l:nvdec.a \ -L $(BUILD_DIR)/gb28181/lib -l:gb28181.a \ - -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 -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(LIBSPATH) $(INCS) $(LIBS) $(MACROS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings # -DUNICODE -D_UNICODE # 默认最终目标 @@ -74,8 +55,8 @@ $(LIB_DIR): # 生成中间目标文件 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR) @echo -e "\e[33m""Building object $@""\e[0m" - @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<" - $(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $< + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) -o $@ $<" + $(CXX) -c $(DEPFLAGS) $(CXXFLAGS) -o $@ $< # 若没有obj目录则自动生成 $(OBJ_DIR): diff --git a/src/gb28181/Makefile b/src/gb28181/Makefile index d154115..f0d2492 100644 --- a/src/gb28181/Makefile +++ b/src/gb28181/Makefile @@ -12,33 +12,21 @@ DEPS:=$(addprefix $(DEP_DIR)/, $(patsubst %.cpp, %.d,a $(SRCS))) # 自动生成头文件依赖选项 DEPFLAGS=-MT $@ -MMD -MP -MF $(DEP_DIR)/$*.d -CUDA_ROOT = /usr/local/cuda-11.1 - -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder - -DEPEND_DIR = $(PROJECT_ROOT)/bin -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export - -INCLUDE= -I $(DEPEND_DIR)/include \ - -I $(CUDA_ROOT)/include \ - -I $(TOP_DIR)/common/inc \ +INCLUDE= -I $(TOP_DIR)/common/inc \ -I $(TOP_DIR)/common/UtilNPP \ -I $(TOP_DIR)/ \ - -I $(SPDLOG_ROOT)/include \ + -I $(CUDA_ROOT)/include \ -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \ -I $(JRTP_ROOT)/jthread/include/jthread -LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ +LIBSPATH= -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \ + -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a \ -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 -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(INCS) $(LIBS) $(LIBSPATH) $(MACROS) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings # 最终目标文件 TARGET:=$(LIB_DIR)/$(MODULE).a @@ -60,8 +48,8 @@ $(LIB_DIR): # 生成中间目标文件 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR) @echo -e "\e[33m""Building object $@""\e[0m" - @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<" - @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $< + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) -o $@ $<" + @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) -o $@ $< # 若没有obj目录则自动生成 $(OBJ_DIR): diff --git a/src/interface/Makefile b/src/interface/Makefile index 5b38ce4..a856501 100644 --- a/src/interface/Makefile +++ b/src/interface/Makefile @@ -12,41 +12,28 @@ DEPS:=$(addprefix $(DEP_DIR)/, $(patsubst %.cpp, %.d,a $(SRCS))) # 自动生成头文件依赖选项 DEPFLAGS=-MT $@ -MMD -MP -MF $(DEP_DIR)/$*.d - -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder - -DEPEND_DIR = $(PROJECT_ROOT)/bin -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export - -INCLUDE= -I $(DEPEND_DIR)/include \ - -I $(CUDA_ROOT)/include \ - -I $(TOP_DIR)/common/inc \ +INCLUDE= -I $(TOP_DIR)/common/inc \ -I $(TOP_DIR)/common/UtilNPP \ -I $(TOP_DIR)/ \ - -I $(SPDLOG_ROOT)/include \ -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \ -I $(JRTP_ROOT)/jthread/include/jthread \ -I $(TOP_DIR)/src/gb28181 \ -I $(TOP_DIR)/src/nvdec \ + -I $(CUDA_ROOT)/include \ -LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ +LIBSPATH= -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \ + -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a \ -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 -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(LIBSPATH) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings # 最终目标文件 TARGET:=$(LIB_DIR)/$(MODULE).a -# MODULE_LIBS:=$(BUILD_DIR)/nvdec/lib/nvdec.a \ -# $(BUILD_DIR)/gb28181/lib/gb28181.a\ # 默认最终目标 .PHONY:all @@ -65,9 +52,9 @@ $(LIB_DIR): # 生成中间目标文件 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR) @echo -e "\e[33m""Building object $@""\e[0m" - @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<" + @echo -e "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBS) $(MACROS) -o $@ $<" # @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $(MODULE_LIBS) $< - @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $< + @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBS) $(MACROS) -o $@ $< # 若没有obj目录则自动生成 $(OBJ_DIR): diff --git a/src/nvdec/Makefile b/src/nvdec/Makefile index 1b49ca4..5d1e8ad 100644 --- a/src/nvdec/Makefile +++ b/src/nvdec/Makefile @@ -9,7 +9,7 @@ SRCS:=$(notdir $(wildcard $(SRC_DIR)/*.cpp)) OBJS:=$(addprefix $(OBJ_DIR)/, $(patsubst %.cpp, %.o, $(SRCS))) DEPS:=$(addprefix $(DEP_DIR)/, $(patsubst %.cpp, %.d,a $(SRCS))) -CUDA_ROOT = /usr/local/cuda-11.1 + NVCC = $(CUDA_ROOT)/bin/nvcc # 自动生成头文件依赖选项 @@ -21,35 +21,24 @@ DEFS = -DENABLE_DVPP_INTERFACE TARGET:=$(LIB_DIR)/$(MODULE).a -PROJECT_ROOT= /mnt/data/cmhu/FFNvDecoder - -DEPEND_DIR = $(PROJECT_ROOT)/bin -THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty -SPDLOG_ROOT = $(THIRDPARTY_ROOT)/spdlog-1.9.2/release JRTP_ROOT = $(THIRDPARTY_ROOT)/jrtp_export - -INCLUDE= -I $(DEPEND_DIR)/include \ - -I $(CUDA_ROOT)/include \ - -I $(TOP_DIR)/common/inc \ +INCLUDE= -I $(TOP_DIR)/common/inc \ -I $(TOP_DIR)/common/UtilNPP \ - -I $(TOP_DIR)/ \ - -I $(SPDLOG_ROOT)/include \ + -I $(TOP_DIR) \ + -I $(CUDA_ROOT)/include \ -I $(JRTP_ROOT)/jrtplib/include/jrtplib3 \ -I $(JRTP_ROOT)/jthread/include/jthread -LIBSPATH= -L $(DEPEND_DIR)/lib -lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice \ +LIBSPATH= -L $(JRTP_ROOT)/jthread/lib -l:libjthread.a \ + -L $(JRTP_ROOT)/jrtplib/lib -l:libjrtp.a \ -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 - -CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings +CXXFLAGS= -g -O0 -fPIC $(INCLUDE) $(LIBSPATH) $(DEFS) -lpthread -lrt -lz -fexceptions -std=c++11 -fvisibility=hidden -Wl,-Bsymbolic -ldl -Wwrite-strings # -DUNICODE -D_UNICODE -NFLAGS_LIB=-g -c -shared -Xcompiler -fPIC -Xcompiler -fvisibility=hidden -NFLAGS = $(NFLAGS_LIB) $(INCLUDE) -std=c++11 +NFLAGS_LIB=-g -c -shared -Xcompiler -fPIC +NFLAGS = $(NFLAGS_LIB) $(INCLUDE) $(LIBSPATH) -std=c++11 CU_SOURCES:=$(notdir $(wildcard $(SRC_DIR)/*.cu)) CU_OBJS:=$(addprefix $(OBJ_DIR)/, $(patsubst %.cu, %.o, $(CU_SOURCES))) @@ -72,13 +61,13 @@ $(LIB_DIR): # 生成中间目标文件 $(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp $(DEP_DIR)/%.d | $(OBJ_DIR) $(DEP_DIR) @echo -e "\e[33m""Building object $@""\e[0m" - @echo "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $<" - @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBSPATH) $(MACROS) -o $@ $< + @echo "$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBS) $(MACROS) -o $@ $<" + @$(CXX) -c $(DEPFLAGS) $(CXXFLAGS) $(INCS) $(LIBS) $(MACROS) -o $@ $< $(OBJ_DIR)%.o:$(SRC_DIR)/%.cu @echo -e "\e[33m""Building object $@""\e[0m" - @echo "$(NVCC) $(NFLAGS) -o $@ $<" - $(NVCC) $(NFLAGS) -o $@ $< + @echo "$(NVCC) $(NFLAGS) $(INCS) $(LIBS) -o $@ $<" + $(NVCC) $(NFLAGS) $(INCS) $(LIBS) -o $@ $< # 若没有obj目录则自动生成 -- libgit2 0.21.4