我搜索了这样做的最佳方式,但我无法找到明确的答案。使用cmake构建tensorflow服务客户端
是否有人能够使用cmake构建tensorflow服务客户端?
我从proto生成CPP文件时遇到困难,因为它们是预测服务所必需的。那些原始文件还包括tensorflow的原始文件。
到目前为止,我想出了这一点:
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
文件。
这是否是正确的选择?
任何帮助/建议将不胜感激。
我放弃了。我能够发现的是,CMake命令(GENERATE_CPP)仅在其构建树中生成.pb文件。 我所做的是将所有需要的proto文件复制到一个单独的文件夹(保留目录结构)并通过调用protoc shell命令显式生成.pb文件。然后用cmake建立了一个独立的prrotobuf库。 – Maja
我用[this](https://github.com/philosophus/tf-serving-demo)作为参考。更详细的解释[这里](http://fdahms.com/2017/03/05/tensorflow-serving-jvm-client/)由弗洛里安达姆斯 – Maja