我正在尝试将 grpc 集成到 C++ 项目中。但我发现唯一的方法是下载所有源代码并自行编译。
有什么方法可以获取我可以链接的预编译 .so/.a 文件和适用于 Linux 的 grpc_cpp_plugin?
或者 c++ 不可能这样做,为什么?
最佳答案
如果您正在寻找预编译的 gRPC 库,您应该使用 vcpkg . 我还尝试交叉编译 gRPC,而不构建库本身。用vcpkg我很好地做到了这一点。 只需几个步骤即可进行设置:
- 从 GitHub 拉取 vcpkg 并按照说明进行设置
- 使用“./vcpkg install grpc”安装 grpc
- 将 CMakeLists.txt 中的 CMAKE_TOOLCHAIN_FILE 设置为 vcpkg 文件夹中的“vcpkg.cmake”文件
- 将 gRPC 添加到您的 CMakeLists.txt
这是我的 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_cpp_plugin)。
优点:
- 易于设置
- vcpkg 适用于所有常见平台
- 如果不再需要某个包,您可以删除“path_to_vcpkg/packages”中的文件夹
- 包含您需要的所有 gRPC 工具
缺点:
- “path_to_vcpkg/packages”文件夹在安装了一些包后变得相当大
关于c++ - 为什么grpc没有预编译的c++库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56794557/