cmake - 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
文件。
解决方案
推荐阅读
- swift - UITableViewCell textLabel 未覆盖单元格的整个宽度
- user-interface - 如何使用 QThread 作为子类来防止冻结 GUI?(没有工人对象和 .moveToThread() 方法)
- linux - Setfacl 在 dockerfile 中无法正常工作
- javascript - html 上的一个按钮,用于在准确的时间触发自动播放音频
- react-native - 在 iOS android 中添加的视图寻呼机上反应本机错误可以正常工作如何解决?
- python - 如何在特殊位置获取文本
- rest - Maven 应用程序部署到 tomcat 中的 noSuchMethodError
- python - BeautifulSoup 和 Selenium scrape 返回 None 但有元素
- css - 是否可以在 scss 中使用来自 Angular 服务的样式?
- arguments - 为 QEMU 裸机传递参数