为什么grpc没有预编译的c++库

why there is no precompiled c++ library for grpc

本文关键字:c++ 编译 grpc 为什么      更新时间:2023-10-16

我正在尝试将grpc集成到C++项目中。但我发现唯一的方法是下载所有的源代码并自己编译。

有什么方法可以获得一个预编译的.so/.一个我可以链接的文件和一个适用于Linux的grpc_cpp_plugin吗?

或者c++不可能做到这一点,为什么?

如果您正在寻找预编译的gRPC库,那么应该使用vcpkg。我还试图交叉编译gRPC,而不构建库本身。使用vcpkg,我很好地实现了这一点。只有几个步骤可以设置:

  1. 从GitHub中提取vcpkg并按照说明进行设置
  2. 使用">./vcpkg安装grpc"安装grpc
  3. CMakeLists.txt中的CMAKE_TOOLCHAIN_FILE设置为vcpkg文件夹中的">vcpkg.CMAKE"-文件
  4. CMakeLists.txt中添加gRPC

这是我的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插件(还有grpc_cp_plugin)。

优点:

  • 易于设置
  • vcpkg可用于所有常见的平台
  • 如果不再需要包,您可以删除">path_to_vcpkg/packages"中的文件夹
  • 包括您需要的所有gRPC工具

缺点:

  • 安装一些软件包后,">path_to_vcpkg/packages"文件夹变得相当大

有没有办法获得一个预编译.so/.一个我可以链接的文件和一个适用于Linux的grpc_cpp_plugin?

要回答这个问题,gRPC C++插件目前需要手动构建和安装,如下所述:https://grpc.io/blog/installation/

这意味着目前没有预编译的gRPC C++插件。