【发布时间】:2018-03-30 09:35:43
【问题描述】:
我搜索了执行此操作的最佳方法,但找不到明确的答案。
有人能够使用 cmake 构建一个 tensorflow 服务客户端吗?
我在从 proto 生成 CPP 文件时遇到困难,因为预测服务需要它们。这些 proto 文件还包括来自 tensorflow 的 proto 文件。
到目前为止,我想出了这个:
project(serving C CXX)
find_package(Protobuf REQUIRED)
file(GLOB_RECURSE proto_files RELATIVE ${serving_SOURCE_DIR}/tensorflow/
"${serving_SOURCE_DIR}/tensorflow/*.proto")
set(PROTOBUF_GENERATE_CPP_APPEND_PATH OFF)
include_directories(${PROTOBUF_INCLUDE_DIRS})
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${proto_files})
add_library(tf_protos ${PROTO_SRCS} ${PROTO_HDRS})
target_link_libraries(tf_protos PUBLIC ${PROTOBUF_LIBRARIES})
Cmake 构建成功,但是 make 命令给了我一个错误:
No rule to make target '../tensorflow/tools/proto_text/test.proto', needed by 'tensorflow/tools/proto_text/test.pb.cc'. Stop.
为了克服.proto的问题,我使用了命令
set(PROTOBUF_GENERATE_CPP_APPEND_PATH OFF)
这里有解释:https://groups.google.com/forum/#!topic/protobuf/eow2fNDUHvc
我当前的文件夹结构是
serving/
CmakeLists.txt
tensorflow/
tensorflow_serving/
apis/
文件夹apis 包含客户端实现所需的.proto 文件,它们包括来自文件夹tensorflow 的.proto 文件。
这是正确的方法吗?
任何帮助/建议将不胜感激。
【问题讨论】:
标签: c++ cmake tensorflow-serving