如何为TensorFlow Lite项目创建CMake配置并完成库链接?
解决TensorFlow Lite项目的CMake链接问题
修改后的完整CMakeLists.txt
cmake_minimum_required(VERSION 3.2.2) project(trash-finder-tf LANGUAGES CXX) # 设置C++标准,TensorFlow Lite建议至少C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) option (FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." TRUE) if (${FORCE_COLORED_OUTPUT}) if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") add_compile_options (-fdiagnostics-color=always) elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_compile_options (-fcolor-diagnostics) endif () endif () # 引入TensorFlow Lite的CMake构建配置 # 指定子模块构建目录,避免污染主build目录 add_subdirectory( ${CMAKE_SOURCE_DIR}/tensorflow/lite ${CMAKE_BINARY_DIR}/tflite EXCLUDE_FROM_ALL ) # 修正源文件路径,匹配你的目录结构 add_executable(main app/src/main.cpp ) # 包含项目自身的头文件目录 target_include_directories(main PRIVATE app/include/ ) # 链接TensorFlow Lite库到可执行文件 target_link_libraries(main PRIVATE tensorflow-lite )
关键修改说明
- 路径修正:你的源文件和头文件都在
app目录下,因此调整add_executable和target_include_directories的路径,确保CMake能正确定位文件。 - C++标准设置:TensorFlow Lite现代版本依赖C++17及以上标准,显式声明可避免编译兼容性问题。
- 引入TensorFlow Lite子模块:通过
add_subdirectory加载tensorflow子模块下的lite构建配置,EXCLUDE_FROM_ALL参数仅构建我们需要的TensorFlow Lite目标,而非整个TensorFlow项目,大幅减少构建时间。 - 库链接:使用
target_link_libraries将tensorflow-lite库绑定到你的可执行文件,解决符号未定义问题。
构建步骤
- 确保tensorflow子模块已完整拉取:
git submodule update --init --recursive
- 进入build目录执行构建:
cd build cmake -G Ninja .. ninja
内容的提问来源于stack exchange,提问作者Snakehater
相关产品推荐
相关产品推荐

