CC := gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ CFLAGS := -Wall -Wextra -fPIC -O3 # -funroll-loops -finline-functions -flto -flto LDFLAGS := -shared -ldl -lm -lrt -lstdc++fs SRCDIR := src LIBDIR := lib BUILDDIR := build # 获取src目录下所有cpp文件 SRCEXT := cpp SOURCES := $(wildcard $(SRCDIR)/*.$(SRCEXT)) # 生成目标so文件的路径及名称 TARGET_LIB := $(LIBDIR)/libasj_ai.so # 获取头文件路径 INCLUDE := -I include ifeq ($(NPU_TYPE), EEASY) # 亿智库 NPU_INCLUDE := -I npu/eeasy/include \ -I npu/eeasy/include/mbase NPU_LDFLAGS := -L npu/eeasy/lib -lopenvx -lopenvx-nn -lnn -lnn_base -lmbase -lax -llog NPU_SOURCES := npu/eeasy/src/EeasyModel.cpp NPU_OBJECTS := $(BUILDDIR)/EeasyModel.o else ifeq ($(NPU_TYPE), AXERA) # 爱芯库 NPU_INCLUDE := -I npu/axera/include \ -I npu/axera/include/axera NPU_LDFLAGS := -L npu/axera/lib -lax_run_joint -lax_interpreter_external -lax_interpreter -lax_sys -lax_npu_cv_kit -ldl -lm -lrt -lstdc++fs NPU_SOURCES := npu/axera/src/AxeraModel.cpp NPU_OBJECTS := $(BUILDDIR)/AxeraModel.o CFLAGS += -DAXERA_TARGET_CHIP_AX620 # else # $(error HJJ提示:写错或者不写平台,需要加 NPU_TYPE=EEASY 或 NPU_TYPE=AXERA) endif CFLAGS += -D$(NPU_TYPE)_CHIP # 生成中间目标文件的路径 OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) $(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) @mkdir -p $(BUILDDIR) $(CC) $(CFLAGS) $(INCLUDE) $(NPU_INCLUDE) -c -o $@ $< $(BUILDDIR)/%.o: $(NPU_SOURCES) @mkdir -p $(BUILDDIR) $(CC) $(CFLAGS) $(INCLUDE) $(NPU_INCLUDE) -c -o $@ $< $(TARGET_LIB): $(OBJECTS) $(NPU_OBJECTS) @mkdir -p $(LIBDIR) $(CC) $^ $(LDFLAGS) $(NPU_LDFLAGS) -o $@ clean: @rm -rf $(BUILDDIR) $(LIBDIR) @rm -rf main test: ifeq ($(NPU_TYPE), EEASY) $(CC) -o main main.cpp npu/eeasy/src/utils.cpp \ $(INCLUDE) $(NPU_INCLUDE) \ -L$(LIBDIR) -lasj_ai $(NPU_LDFLAGS) \ $(CFLAGS) else ifeq ($(NPU_TYPE), AXERA) $(CC) -o main main.cpp \ $(INCLUDE) $(NPU_INCLUDE) \ -L$(LIBDIR) -lasj_ai $(NPU_LDFLAGS) \ $(CFLAGS) # else # $(error HJJ提示:写错或者不写平台,需要加 NPU_TYPE=EEASY 或 NPU_TYPE=AXERA) endif print-% : ; @echo $* = $($*)