找不到源文件:/home/tensorflow/core/util/stats_calculator.cc
Cannot find source file: /home/tensorflow/core/util/stats_calculator.cc
我是 CMake 和 ROS 的新手。
我一直在学习为我的 turtlebot3 项目设置 tensorflow on ubuntu 20.0.4 (server) and rpi4, as well as building tensorflow lite with CMake 的教程。
我将以下代码添加到我的 CMakeLists.txt 并将我的 tensorflow 源目录从 "${TENSORFLOW_SOURCE_DIR}/tensorflow/lite" 修改为"${TENSORFLOW_SOURCE_DIR}/ubuntu/tensorflow/tensorflow/lite"
set(TENSORFLOW_SOURCE_DIR "" CACHE PATH
"Directory that contains the TensorFlow project" )
if(NOT TENSORFLOW_SOURCE_DIR)
get_filename_component(TENSORFLOW_SOURCE_DIR
"${CMAKE_CURRENT_LIST_DIR}/../../../../" ABSOLUTE)
endif()
add_subdirectory(
"${TENSORFLOW_SOURCE_DIR}/ubuntu/tensorflow/tensorflow/lite"
"${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)
add_executable(MobileNetV1 src/scripts/MobileNetV1.cpp)
target_link_libraries(MobileNetV1 ${catkin_LIBRARIES} ${OpenCV_INCLUDE_DIRS} tensorflow-lite)
构建后我遇到以下错误。
CMake Error at /home/ubuntu/tensorflow/tensorflow/lite/CMakeLists.txt:449 (add_executable):
Cannot find source file:
/home/tensorflow/core/util/stats_calculator.cc
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
.hpp .hxx .in .txx
CMake Error at /home/ubuntu/tensorflow/tensorflow/lite/CMakeLists.txt:449 (add_executable):
No SOURCES given to target: benchmark_model
文件存在于 /home/ubuntu/tensorflow/tensorflow/core/util/stats_calculator.cc 下。不知道为什么检测不到
我不知道下一步该怎么做,请帮我解释一下为什么会出现这个错误。
我要编译的代码示例和运行来自这个github如果你想复制。
如果您有关于如何在 C++ 上设置 tensorflow-lite 的易于遵循的教程链接,那就太棒了!
如您的代码所述,目录 TENSORFLOW_SOURCE_DIR
包含 TensorFlow 项目。换句话说,这个目录的内容应该是这样的:https://github.com/tensorflow/tensorflow。 tensorflow-lite 的路径应该与教程中所写的完全一致:
${TENSORFLOW_SOURCE_DIR}/tensorflow/lite
如果表达式 "${CMAKE_CURRENT_LIST_DIR}/../../../../"
不表示您计算机上 TensorFlow 项目的根,则修改 表达式 但保留 TENSORFLOW_SOURCE_DIR
变量的含义。
您可以在计算后打印变量 TENSORFLOW_SOURCE_DIR
的值,并检查它是否实际引用您计算机上 Tensorflow 项目的根目录。
实际上,变量 TENSORFLOW_SOURCE_DIR
在 TensorFlow 项目 本身中 使用。当您的 TENSORFLOW_SOURCE_DIR
设置与其在 Tensorflow 项目中的预期含义不符时,正是这种用法会导致问题。
我想知道为什么教程建议设置 TENSORFLOW_SOURCE_DIR
变量,但没有说明该变量在 TensorFlow 项目中的用法。
您的代码可以使用 Tensorflow 未使用的任何其他变量,而不是 TENSORFLOW_SOURCE_DIR
变量。您甚至可以在您的代码中硬编码 TensorFlow lite 的路径:
# Do not define and do not use `TENSORFLOW_SOURCE_DIR` variable at all
add_subdirectory(
"/home/ubuntu/tensorflow/tensorflow/lite"
"${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)
当发现变量TENSORFLOW_SOURCE_DIR
没有设置时,脚本tensorflow/lite/CMakeLists.txt
会自动正确设置它:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/CMakeLists.txt#L42
我是 CMake 和 ROS 的新手。
我一直在学习为我的 turtlebot3 项目设置 tensorflow on ubuntu 20.0.4 (server) and rpi4, as well as building tensorflow lite with CMake 的教程。
我将以下代码添加到我的 CMakeLists.txt 并将我的 tensorflow 源目录从 "${TENSORFLOW_SOURCE_DIR}/tensorflow/lite" 修改为"${TENSORFLOW_SOURCE_DIR}/ubuntu/tensorflow/tensorflow/lite"
set(TENSORFLOW_SOURCE_DIR "" CACHE PATH
"Directory that contains the TensorFlow project" )
if(NOT TENSORFLOW_SOURCE_DIR)
get_filename_component(TENSORFLOW_SOURCE_DIR
"${CMAKE_CURRENT_LIST_DIR}/../../../../" ABSOLUTE)
endif()
add_subdirectory(
"${TENSORFLOW_SOURCE_DIR}/ubuntu/tensorflow/tensorflow/lite"
"${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)
add_executable(MobileNetV1 src/scripts/MobileNetV1.cpp)
target_link_libraries(MobileNetV1 ${catkin_LIBRARIES} ${OpenCV_INCLUDE_DIRS} tensorflow-lite)
构建后我遇到以下错误。
CMake Error at /home/ubuntu/tensorflow/tensorflow/lite/CMakeLists.txt:449 (add_executable):
Cannot find source file:
/home/tensorflow/core/util/stats_calculator.cc
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
.hpp .hxx .in .txx
CMake Error at /home/ubuntu/tensorflow/tensorflow/lite/CMakeLists.txt:449 (add_executable):
No SOURCES given to target: benchmark_model
文件存在于 /home/ubuntu/tensorflow/tensorflow/core/util/stats_calculator.cc 下。不知道为什么检测不到
我不知道下一步该怎么做,请帮我解释一下为什么会出现这个错误。
我要编译的代码示例和运行来自这个github如果你想复制。
如果您有关于如何在 C++ 上设置 tensorflow-lite 的易于遵循的教程链接,那就太棒了!
如您的代码所述,目录 TENSORFLOW_SOURCE_DIR
包含 TensorFlow 项目。换句话说,这个目录的内容应该是这样的:https://github.com/tensorflow/tensorflow。 tensorflow-lite 的路径应该与教程中所写的完全一致:
${TENSORFLOW_SOURCE_DIR}/tensorflow/lite
如果表达式 "${CMAKE_CURRENT_LIST_DIR}/../../../../"
不表示您计算机上 TensorFlow 项目的根,则修改 表达式 但保留 TENSORFLOW_SOURCE_DIR
变量的含义。
您可以在计算后打印变量 TENSORFLOW_SOURCE_DIR
的值,并检查它是否实际引用您计算机上 Tensorflow 项目的根目录。
实际上,变量 TENSORFLOW_SOURCE_DIR
在 TensorFlow 项目 本身中 使用。当您的 TENSORFLOW_SOURCE_DIR
设置与其在 Tensorflow 项目中的预期含义不符时,正是这种用法会导致问题。
我想知道为什么教程建议设置 TENSORFLOW_SOURCE_DIR
变量,但没有说明该变量在 TensorFlow 项目中的用法。
您的代码可以使用 Tensorflow 未使用的任何其他变量,而不是 TENSORFLOW_SOURCE_DIR
变量。您甚至可以在您的代码中硬编码 TensorFlow lite 的路径:
# Do not define and do not use `TENSORFLOW_SOURCE_DIR` variable at all
add_subdirectory(
"/home/ubuntu/tensorflow/tensorflow/lite"
"${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)
当发现变量TENSORFLOW_SOURCE_DIR
没有设置时,脚本tensorflow/lite/CMakeLists.txt
会自动正确设置它:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/CMakeLists.txt#L42