提交
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,154 @@
|
||||
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"
|
||||
Reference in New Issue
Block a user