88 lines
2.0 KiB
Makefile
88 lines
2.0 KiB
Makefile
# 包含外部Makefile
|
|
include ./../../../linux.mk
|
|
|
|
ProjectName := lib60870
|
|
|
|
|
|
DIR := $(realpath $(CURDIR)/..)
|
|
LAST_DIR := $(notdir $(DIR))
|
|
|
|
|
|
# 静态库文件目标
|
|
OutputFile := $(LIB_REL)/$(ProjectName).a
|
|
ArchiveCommand := ar rcs # 静态库打包命令
|
|
|
|
MakeDirCommand := mkdir -p
|
|
|
|
OBJ := $(DIR)/$(ProjectName)/obj
|
|
SRC := $(SRC_ROOT_DIR)/$(LAST_DIR)/$(ProjectName)/src
|
|
INC := $(SRC_ROOT_DIR)/$(LAST_DIR)/$(ProjectName)/inc
|
|
|
|
# print_dir:
|
|
# @echo "Shell层面打印DIR: $(SRC_ROOT_DIR) $(OBJ) $(SRC) $(INC) "
|
|
|
|
# 定义源文件和对象文件
|
|
SOURCES := $(wildcard $(SRC)/*.c) $(wildcard $(SRC)/*.cpp)
|
|
OBJECTS := $(patsubst $(SRC)/%.c, $(OBJ)/%.o,$(filter %.c,$(SOURCES)))
|
|
OBJECTSCPP := $(patsubst $(SRC)/%.cpp, $(OBJ)/%.o,$(filter %.cpp,$(SOURCES)))
|
|
|
|
ALL_OBJECTS := $(OBJECTS) $(OBJECTSCPP)
|
|
|
|
# 编译选项
|
|
APP_C_FLAGS := $(C_FLAGS)
|
|
APP_C_FLAGS += -I $(INC) -g
|
|
# 注入 CBB 兼容类型别名(不修改库源码)
|
|
APP_C_FLAGS += -include cbb_compat.h
|
|
|
|
APP_C_FLAGS += -O0
|
|
|
|
# 伪目标
|
|
.PHONY : all clean veryclean rebuild
|
|
|
|
# 默认目标
|
|
all: $(OutputFile)
|
|
|
|
# 构建静态库
|
|
$(OutputFile): $(ALL_OBJECTS)
|
|
@$(MakeDirCommand) $(dir $@)
|
|
$(ArchiveCommand) $@ $^
|
|
@echo "Static library built: $@"
|
|
|
|
# 重新构建
|
|
rebuild: veryclean all
|
|
|
|
# 清理
|
|
clean:
|
|
rm -f $(OBJ)/*.o
|
|
rm -f $(OBJ)/*.d
|
|
rm -f $(OutputFile)
|
|
rm -f ./out/*.*
|
|
|
|
# 非常彻底的清理
|
|
veryclean: clean
|
|
rm -f ./out/$(OutputFile)
|
|
rm -f $(SRC)/*.bak
|
|
rm -f $(INC)/*.bak
|
|
|
|
# C对象文件规则
|
|
$(OBJECTS): $(OBJ)/%.o: $(SRC)/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(APP_C_FLAGS) -o $@ -c $<
|
|
|
|
# C++对象文件规则
|
|
$(OBJECTSCPP): $(OBJ)/%.o: $(SRC)/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(CPP) $(APP_C_FLAGS) -o $@ -c $<
|
|
|
|
# 可选:生成依赖文件(用于自动重新编译)
|
|
# -include $(ALL_OBJECTS:.o=.d)
|
|
|
|
# C依赖文件规则
|
|
$(OBJ)/%.d: $(SRC)/%.c
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(APP_C_FLAGS) -MM -MT '$(OBJ)/$*.o' $< > $@
|
|
|
|
# C++依赖文件规则
|
|
$(OBJ)/%.d: $(SRC)/%.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(CPP) $(APP_C_FLAGS) -MM -MT '$(OBJ)/$*.o' $< > $@
|