通过vcpkg和cmake安装后如何生成c++ grpc文件?

Posted

技术标签:

【中文标题】通过vcpkg和cmake安装后如何生成c++ grpc文件?【英文标题】:How to generate c++ grpc file after installing it by vcpkg and cmake? 【发布时间】:2021-03-03 08:33:14 【问题描述】:

我通过vcpkg install grpc 安装 grpc 并将其添加到 cmake 文件中。 现在我想生成 grpc c++ 文件,我运行:

protoc --cpp_out=grpc_file/ --grpc_out=grpc_file/  --proto_path=grpc_proto/  ./grpc_proto/side_information.proto

返回错误:

protoc-gen-grpc: program not found or is not executable
--grpc_out: protoc-gen-grpc: Plugin failed with status code 1.

如何使用 vcpkg 安装的 grpc_cpp_plugin ? 我的工作空间是:

.
├── CMakeLists.txt
├── Readme.md
├── build
├── build_envs.sh
├── grpc_file
├── grpc_proto
├── main.cpp
├── twitter.json
└── vcpkg

【问题讨论】:

我知道这不是您要寻找的答案,但如果您在使用 vcpkg 时遇到问题,请尝试 bazel/cmake github.com/grpc/grpc/tree/master/src/cpp#grpc-c。 Bazel/CMake 是 gRPC 开发人员使用的 你检查过***.com/questions/64404450/… 不一样,但可能会帮助你看看你是否缺少一些包 你能在 CMake 中显示你的配置吗 @DachuanZhao 我的回答对您有帮助吗,还是您需要更多帮助? 【参考方案1】:

protoc 正在尝试从您的 PATH 中查找 protoc-gen-grpc 插件,但找不到,因此出现错误。解决方法是简单地指定所述插件的路径。鉴于您使用的是vcpkg,这条路径可能是这样的:

protoc --cpp_out=grpc_file/ --grpc_out=grpc_file/ --proto_path=grpc_proto/ \
--plugin=protoc-gen-grpc="<vcpkg_install_path>\packages\grpc_x64-windows\tools\grpc\grpc_cpp_plugin.exe" \ 
./grpc_proto/side_information.proto 

如果您希望将 Visual Studio 用于您的 grpc 项目,我建议您查看 this guide 以生成 VS 解决方案等。

【讨论】:

多年来一直在寻找这个可执行文件 - 谢谢 为了将来参考,你是如何找到这个可执行文件的 - 我在任何文档中都找不到它?【参考方案2】:

你的 CMakeLists.txt 是像下面这样吗?

cmake_minimum_required(VERSION 3.1)

if(DEFINED ENVVCPKG_ROOT)
    set(CMAKE_TOOLCHAIN_FILE $ENVVCPKG_ROOT/scripts/buildsystems/vcpkg.cmake)
else()
    set(CMAKE_TOOLCHAIN_FILE "/path_to_vcpkg/scripts/buildsystems/vcpkg.cmake")
endif()

project(Foo)

find_package(gRPC CONFIG REQUIRED)

...

add_executable($PROJECT_NAME $Bar)

target_link_libraries($PROJECT_NAME PRIVATE gRPC::gpr gRPC::grpc gRPC::grpc++ gRPC::grpc_cronet)

在文件夹 path_to_vcpkg/packages/grpc_x64-PLATFORM/tools/grpc 中,您将找到适用于您的平台的所有预编译 grpc-plugins(还有 grpc_cpp_plugin)。

【讨论】:

像这样。我的 CMakeLists.txt 包含 set(VCPKG_ROOT "$CMAKE_CURRENT_SOURCE_DIR/vcpkg/scripts/buildsystems/vcpkg.cmake") 。我找到它了 。谢谢~

以上是关于通过vcpkg和cmake安装后如何生成c++ grpc文件?的主要内容,如果未能解决你的问题,请参考以下文章

vcpkg + CMake

vcpkg + CMake

vcpkg —— VC++ 打包工具

win10 + vs2017 + vcpkg —— VC++ 打包工具

在树莓派上运行 vcpkg 时出现 VCPKG_FORCE_SYSTEM_BINARIES 错误

如何设置 CMAKE_TOOLCHAIN_FILE(vcpkg) 而不将其放入 VScode 的 CMakeLists.txt 中?