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

How to generate c++ grpc file after installing it by vcpkg and cmake?

我通过 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

它returns错误:

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

协议正在尝试从您的 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 解决方案等。

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

cmake_minimum_required(VERSION 3.1)

if(DEFINED ENV{VCPKG_ROOT})
    set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_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_cpp_plugin)的所有预编译 grpc 插件。