首页 > 解决方案 > Google Protobuf - Protoc 使用导入编译 Proto 文件

问题描述

gRPC 示例显示了一个 proto 文件和一个输出文件的使用。但是,我得到了一个导入另一个的 protofile,而后者又从另一个目录导入了几个。

协议是否应该从导入的文件中生成头文件和源文件?或者您是否需要在每个单独的 proto 文件上运行编译器?

有没有人有一个示例 cmake,proto 文件在哪里导入?

我的 cmake 中有这样的东西来编译一个 proto 文件:

add_custom_command(
    OUTPUT "${chat_proto_srcs}" "${chat_proto_hdrs}" "${chat_grpc_srcs}" "${chat_grpc_hdrs}"
    COMMAND ${PROTOC_COMPILER}
    ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}"
    --cpp_out "${CMAKE_CURRENT_BINARY_DIR}"
    -I "${chat_proto_path}"
    --plugin=protoc-gen-grpc="${GRPC_PLUGIN}"
    "${chat_proto}"
    DEPENDS "${chat_proto}")

但它似乎不会为从指向的文件导入的任何文件产生任何内容${chat_proto}

我也试过:

# Generated Proto files
file(GLOB_RECURSE proto_files "${CMAKE_CURRENT_SOURCE_DIR}/*.proto")
PROTOBUF_GENERATE_CPP(proto_srcs proto_hdrs ${proto_files} PLUGIN protoc-gen-grpc=${GRPC_PLUGIN})
add_custom_target(proto_dep DEPENDS ${proto_srcs} ${proto_hdrs})
message(STATUS "Generated source files are ${proto_srcs}")

但是,我没有看到任何 .grpc.pb.cc 文件,也不知道如何获取它们的列表以添加到我的库的编译中add_library。如果我正确理解文档,我必须编译*.pb.cc文件和*.grpc.pb.cc文件。

标签: cmakeprotocol-buffersgrpc

解决方案


推荐阅读