You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake链接TensorFlow Lite Micro静态库提示.h头文件不存在问题求助

问题根因

你报错的核心原因是头文件引用路径和已添加的Include搜索目录不匹配:
你代码里引用的是tensorflow/lite/c/common.h,但你在编译参数里添加的Include路径是/home/yahya/Mbed Programs/ozon-2021-fw/tensorflow/lite/c,编译器会在该路径下拼接你写的引用路径,最终查找的实际路径为/home/yahya/Mbed Programs/ozon-2021-fw/tensorflow/lite/c/tensorflow/lite/c/common.h,该路径显然不存在,因此报错。


解决方案

按优先级依次执行以下操作:

  1. 修正Include目录配置
    打开tensorflow目录下的CMakeLists.txt,修改target_include_directories配置:
  • 删除冗余的${CMAKE_CURRENT_LIST_DIR}/lite/c/条目
  • 新增tensorflow父目录(也就是项目根目录)到Include路径,修改后相关配置如下:
target_include_directories(generic-tflmicro
  INTERFACE
  ${CMAKE_CURRENT_LIST_DIR}/../
  ${CMAKE_CURRENT_LIST_DIR}
  ${CMAKE_CURRENT_LIST_DIR}/third_party/gemmlowp
  ${CMAKE_CURRENT_LIST_DIR}/third_party/flatbuffers/include
  ${CMAKE_CURRENT_LIST_DIR}/third_party/ruy
  ${CMAKE_CURRENT_LIST_DIR}/third_party/kissfft
  $<INSTALL_INTERFACE:lite/c>
)

该配置符合TFLite Micro官方的头文件引用规范,编译器可以从项目根目录出发,正确找到tensorflow/lite/c/common.h文件。
如果你不想修改CMake配置,也可以直接把代码里的头文件引用改成#include "common.h",也能解决当前问题,但后续引用其他TFLite头文件时可能还会遇到同类路径问题。

  1. 清理冗余的CMake配置
    你现有配置里有两处冗余配置可能引发后续问题,建议同步修正:
  • target_include_directories中同时写了.和${CMAKE_CURRENT_LIST_DIR},二者完全等价,删除其一即可
  • target_compile_definitions中的COMPILE_DEFINITIONS前缀属于多余写法,直接写宏名即可,修正后如下:
target_compile_definitions(
  generic-tflmicro
  INTERFACE
  TF_LITE_STATIC_MEMORY
  # LINUX
  TF_LITE_USE_CTIME
)
  1. 清理缓存重新编译
    修改完配置后,完全删除旧的build构建目录,重新执行CMake生成构建文件,再编译项目,避免旧缓存的配置残留生效。
    如果以上操作完成后仍报错,建议把项目迁移到不含空格的路径下(你现有路径中的Mbed Programs带空格,部分构建工具对带空格的路径兼容不好),再重新编译即可。

内容的提问来源于stack exchange,提问作者Yahya Tawil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:15:03