Makefile.bak0308 1.3 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

DEPEND_DIR = $(PROJECT_ROOT)/bin
SRC_ROOT = $(PROJECT_ROOT)/src
THIRDPARTY_ROOT = $(PROJECT_ROOT)/3rdparty
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 \

MACROS:=
export CXX CXXFLAGS INCS MACROS

# 链接器
LD:=g++
LDFLAGS:=
LIBS:= -L $(SPDLOG_ROOT)/lib -l:libspdlog.a \

# 各个模块
MODULES:= dvpp interface

# 各个模块对应的库
MODULE_LIBS:=$(BUILD_DIR)/dvpp/lib/libdvpp.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)