每个.proto文件都import了其他目录下的文件,这里的import类似于C++中的include,但是这里的import又可以相互引用,例如上述的status_handler.proto也引用了mediapipe_options.proto。 如果直接对上述所有的.proto文件直接使用protobuf_generate_cpp命令,会直接报错,因为这些文件不在一个目录,而且import的相对目录也无法分析。另...
一般来说,protobuf经常搭配Cmake使用,Cmake有官方的modules,可以通过简单的几个命令protobuf_generate_cpp来生成对应的.pb.cc和.pb.h。 简单的例子: find_package(Protobuf REQUIRED) include_directories(${Protobuf_INCLUDE_DIRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) protobuf_generate_cpp(PROTO...
每个.proto文件都import了其他目录下的文件,这里的import类似于C++中的include,但是这里的import又可以相互引用,例如上述的status_handler.proto也引用了mediapipe_options.proto。 如果直接对上述所有的.proto文件直接使用protobuf_generate_cpp命令,会直接报错,因为这些文件不在一个目录,而且import的相对目录也无法分析。另...
PROTOBUF_GENERATE_CPP将在构建库时延迟protobuf源和头文件的生成。解决方法是定义一个自定义目标,并将...
protobuf protobuf 是谷歌发布的一种数据封装协议, 用于数据传输。在使用时需要定义好 proto 文件, 然后用 protoc 工具编译为 pb.h 和 pb.cc 文件。打开命令行输入如下命令 protoc -I=${proto_file_dir} --cpp_out=${pb_file_dir} *.proto 这里面有三个参数, -I 表示 proto 文件的路径; --cpp_out...
PROTOBUF_GENERATE_CPP(SOURCES_2 HEADERS_2${MSG_PROTOS_2}) 这种方式生成的 pb 文件输出在 build 文件夹里面,且不论 proto 文件结构如何, 生成的 pb 文件都会被放在同一个目录下。 这里有另一种方式,来指定输出文件的路径。 指定输出路径 cmake_minimum_required(VERSION3.5)project(common_pb)find_package(...
(GRPC_CPP_PLUGIN grpc_cpp_plugin)#proto源文件set(PROTO_FILES"service/proto/helloworld.proto")# 生成 proto 源文件对应的 cpp 源文件,并编译set(PROTOC_OUT_DIR"${CMAKE_CURRENT_BINARY_DIR}/protobuf_generated")add_library(service_proto OBJECT ${PROTO_FILES})protobuf_generate(TARGET service_proto...
cpp`这将直接将生成的文件添加到目标的源列表中。查看protobuf-config.cmake中的protobuf_generate函数...
要求protobuf_generate_cpp命令和生成add_executable() 或 add_library() 的命令必须在同一个CMakeList中 该方法(当前3.18)仍无法设置源码的生成路径,只能默认在相应的build-tree中生成 CMake funciton使用 ├─hello_world_protobuf │ ├─protobuf_rec ...
bar.proto的文件如下: import "common/foo/foo.proto"; message bar_msg { optional foo_msg foo = 1; optional string name = 2; } 1. 2. 3. 4. 5. 6. 7. 如上,bar文件引用foo,而且这两个不在一个目录,如果直接使用protobuf_generate_cpp来生成,直接会报错。(这个例子取自Yu的一篇博文) ...