我正在尝试使用 libDaisy(Electrosmith Daisy Seed 开发板的 HAL - 基于 STM32H7 MCU 的开发板)将用于微控制器的 Tensorflow Lite 包含在 C++ 项目中。我遇到了这个问题,Tensorflow 试图导入一些其他文件但不能。这似乎是由于使用了绝对路径,因为如果我将它们更改为相对路径,它就可以工作,但是 tensorflow 有数百个导入,所以手工操作是不切实际的。例如,这是我在包含 Tensorflow 时遇到的错误:
DataInference/RainPredictor/../../tensorflow/tensorflow/lite/micro/all_ops_resolver.h:18:10: fatal error: tensorflow/lite/micro/compatibility.h: No such file or directory
18 | #include "tensorflow/lite/micro/compatibility.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我可以通过更改 Tensorflow 中的这个包含来解决这个问题:
#include "tensorflow/lite/micro/compatibility.h"
至:
#include "compatibility.h"
但我必须对 Tensorflow 中的每个包含项执行此操作以修复所有这些显然不切实际的错误。我假设我需要启用一些 Makefile 魔术或编译器设置,以允许在我不知道的 C++ 项目中使用绝对路径。而且我似乎无法在 Google 或 C++ 或 Make 文档中找到任何内容。那么有人可以就这个问题启发我吗?
# Project Name
TARGET = Firmware
# Sources
CPP_SOURCES = Firmware.cpp
LDFLAGS += -u _printf_float
# Library Locations
LIBDAISY_DIR = ../libDaisy
DAISYSP_DIR = ../DaisySP
TENSORFLOW_DIR = ./tensorflow
TENSORFLOW_ROOT := ./tensorflow
# Core location, and generic makefile.
SYSTEM_FILES_DIR = $(LIBDAISY_DIR)/core
include $(SYSTEM_FILES_DIR)/Makefile
#include "../../tensorflow/tensorflow/lite/micro/all_ops_resolver.h"
#include "../../tensorflow/tensorflow/lite/micro/micro_interpreter.h"
#include "../../tensorflow/tensorflow/lite/schema/schema_generated.h"
#include "model.h"
void predict_rain_intensity() {
}