# 项目根目录 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)