155 lines
3.6 KiB
Makefile
155 lines
3.6 KiB
Makefile
PLATFORM=x86
|
|
|
|
# 判断当前平台是否为x86
|
|
ifeq ($(PLATFORM),x86)
|
|
SEL_DIR=out
|
|
else
|
|
SEL_DIR=bin
|
|
endif
|
|
|
|
SRC_DIR = .
|
|
SRC_EXP_DIR = .
|
|
# ../logical
|
|
TARGET = ./$(SEL_DIR)/$(notdir $(CURDIR))
|
|
|
|
# 定义输出目录
|
|
#OUTDIR := ./out
|
|
#OBJDIR := ./$(OUTDIR)/obj
|
|
OUTDIR := ./out
|
|
OBJDIR := ./$(OUTDIR)/obj/
|
|
##$(notdir $(CURDIR))
|
|
|
|
AllDIRS := $(shell ls -R .| grep '^\./.*:$$' | awk '{gsub(":","");print}') .
|
|
|
|
CSRCS = $(foreach n,$(AllDIRS) , $(wildcard $(n)/*.c)) #$(wildcard *.c)
|
|
|
|
CXXSRCS = $(foreach n,$(AllDIRS) , $(wildcard $(n)/*.cpp)) #$(wildcard *.cpp)
|
|
|
|
OBJS := $(CSRCS:.c=.o) $(CXXSRCS:.cpp=.o)
|
|
DEPS := $(CSRCS:.c=.d) $(CXXSRCS:.cpp=.d)
|
|
|
|
# 根据源文件列表,将.c文件和.cpp文件生成对应的.o文件列表
|
|
OBJS := $(patsubst %, $(OBJDIR)/%, $(CSRCS:.c=.o)) $(patsubst %, $(OBJDIR)/%, $(CXXSRCS:.cpp=.o))
|
|
|
|
|
|
|
|
LIBRARY_AR_PATH = #../../../../lib_src/a_src
|
|
LIBRARY_SO_PATH = ../../../../lib_src/so_src
|
|
|
|
STATIC_LIBS_DIR = ../../../../lib/$(PLATFORM)/lib_a
|
|
SHARED_LIBS_DIR = ../../../../lib/$(PLATFORM)/lib_so
|
|
|
|
LIBRARY_NAME = "xxx"
|
|
|
|
|
|
# 头文件必须放在include目录下才能自动识别
|
|
INCDIRS= $(SRC_DIR)/../../../../include/general_type \
|
|
$(shell find ${SRC_DIR} -type d -name inc) \
|
|
$(shell find ${LIBRARY_AR_PATH} -type d -name inc) \
|
|
$(shell find ${LIBRARY_SO_PATH} -type d -name inc) \
|
|
|
|
|
|
INC_PATH = $(foreach path,$(INCDIRS),-I$(path))
|
|
|
|
|
|
# .so
|
|
LIB_SO_PATH = ../../../../lib/$(PLATFORM)/lib_so \
|
|
-lprlog \
|
|
-Wl,-rpath=./../../../../lib/$(PLATFORM)/lib_so \
|
|
|
|
|
|
# .a
|
|
LIB_AR_PATH = ../lib/$(PLATFORM)/lib_a \
|
|
-l prlog \
|
|
-l prxml \
|
|
-l prgeneral \
|
|
# -l stdc++ \
|
|
# -l dl \
|
|
# -l pthread
|
|
|
|
DEBUG_FLAG = $(DBGFLAGS)
|
|
|
|
# DEBUG_FLAG := -g
|
|
|
|
$(OBJDIR)/%.o: %.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(CXX) $(DEBUG_FLAG) $< -c -o $@ $(INC_PATH) $(SHARED_LIBS) -L$(LIB_AR_PATH) -L$(LIB_SO_PATH)
|
|
|
|
$(OBJDIR)/%.o: %.c
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(DEBUG_FLAG) $< -c -o $@ $(INC_PATH) $(SHARED_LIBS) -L$(LIB_AR_PATH) -L$(LIB_SO_PATH)
|
|
|
|
#test:
|
|
# @echo "LIBRARY_AR_PATH = $(LIBRARY_AR_PATH)"
|
|
# @echo "INC_PATH = $(INC_PATH)"
|
|
|
|
BUILD_DIR = build
|
|
#prepare1:
|
|
# @if [ -d $(BUILD_DIR) ]; then \
|
|
# echo "Removing existing $(BUILD_DIR) directory..."; \
|
|
# rm -rf $(BUILD_DIR); \
|
|
# fi
|
|
|
|
$(TARGET): $(OBJS)
|
|
# @if [ -d ./build ];then rm -rf build/ && make; fi
|
|
@echo "CROSS_COMPILE = $(CROSS_COMPILE)"
|
|
@echo "PLATFORM = $(PLATFORM)"
|
|
@echo
|
|
$(CXX) $(DEBUG_FLAG) $^ -o $@ $(INC_PATH) -L$(LIB_AR_PATH) -L$(LIB_SO_PATH)
|
|
@echo -e "\e[32m >>> build success: $(TARGET) \e[0m"
|
|
|
|
.PHONY: clean all sh rebuild env
|
|
|
|
all: $(TARGET)
|
|
# source /opt/fsl-imx-wayland/5.10-hardknott/environment-setup-cortexa53-crypto-poky-linux
|
|
|
|
rebuild: clean $(TARGET)
|
|
|
|
clean:
|
|
-$(RM) $(OBJS) $(TARGET)
|
|
rm -rf build
|
|
rm -rf $(OBJDIR)
|
|
rm -rf $(notdir $(CURDIR)).log
|
|
|
|
# Standard GNU target
|
|
distclean:
|
|
-$(RM) *.o $(TARGET)
|
|
rm -rf $(OUTDIR)
|
|
|
|
# modify *.h, compile again
|
|
h: touch_cpp all
|
|
|
|
# find the newest .c | .cpp and touch it
|
|
touch_cpp:
|
|
find . -type f \( -name "*.c" -o -name "*.cpp" -name "main*" \)|xargs ls -t|head -n1|xargs touch
|
|
|
|
r: run
|
|
run: all check
|
|
|
|
# Standard GNU target
|
|
check:
|
|
#$(TARGET)
|
|
@echo "#### $(LIB_SO_PATH)"
|
|
@echo "sh $(TARGET)"
|
|
$(TARGET)
|
|
@pwd
|
|
# @echo -e "call: sqlite3 $(shell find ../board_dir/datebase/ -name '*.db' | xargs ls -t | head -n1) .dump \e[32m"
|
|
# @sqlite3 $(shell find ../board_dir/datebase/ -name "*.db" | xargs ls -t | head -n1) .dump
|
|
@echo -e "\e[0m"
|
|
|
|
sh:
|
|
@./build.sh $@
|
|
|
|
shr:
|
|
@./build.sh $@ && ../board_dir/$(SEL_DIR)/$(notdir $(CURDIR))
|
|
|
|
env:
|
|
@echo $(SEL_DIR)
|
|
@echo $(GCC)
|
|
@echo $(CPP)
|
|
@echo "CROSS_COMPILE = $(CROSS_COMPILE)"
|
|
@echo "PLATFORM = $(PLATFORM)"
|
|
@echo
|
|
#$(CXX) #$(DEBUG_FLAG) $^ -o $@ $(INC_PATH) -L$(LIB_AR_PATH) -L$(LIB_SO_PATH)
|
|
@echo -e "\e[32m >>> build success: $(TARGET) \e[0m"
|