Makefile
1.3 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
# 项目根目录
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 demo
# 各个模块对应的库
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)