如何在现有CMake C++项目中正确使用TensorFlow Lite 2.6.0?
TF Lite CMake 集成问题解决方案
问题1:静态集成时依赖过多+路径前缀报错
- 核心原因:你错误地将
tensorflow-lite加入了项目的install(TARGETS)配置段,TF Lite 2.6版本的依赖目标(ruy、absl、fft2d等)均为内部私有编译目标,未配置合法的install属性,直接加入install会触发路径校验错误。 - 解决方案:
- 移除
install(TARGETS)段中的tensorflow-lite条目,add_subdirectory引入TFLite后,仅需在target_link_libraries中声明依赖tensorflow-lite即可,CMake会自动导入所有依赖的头文件路径、链接参数,无需手动添加80+依赖目标。 - 若确实需要将TFLite库安装到项目输出目录,新增如下配置替代直接加入install目标:
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite/cmake_install.cmake") - 移除
问题2:共享库编译时fft2d依赖链接报错
- 核心原因:TF Lite 2.6的CMake构建脚本不支持全局开启
BUILD_SHARED_LIBS,全局开启会强制所有依赖(含fft2d)编译为共享库,而TFLite的内部依赖声明未适配共享库场景,导致链接时找不到对应的导入库。 - 解决方案:
- 移除全局
-DBUILD_SHARED_LIBS=ON参数,改用仅编译TFLite为共享库的专属参数:
cmake ../tensorflow_src/tensorflow/lite \ -DCMAKE_BUILD_TYPE=Debug \ -DTENSORFLOW_LITE_BUILD_SHARED_LIBS=ON \ -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON # Windows环境下必加- 若仍存在编译问题,可追加
-DTFLITE_ENABLE_XNNPACK=OFF参数关闭XNNPACK组件,2.6版本的XNNPACK在共享库构建场景下存在已知路径适配问题。
- 移除全局
内容的提问来源于stack exchange,提问作者icarus
相关产品推荐
相关产品推荐

