c++ grpc 安装

linux 下

现在github 下载的速度极慢

用 让gRPC源码下得飞起 里面的办法把 grpc 源码及submodule 先下好吧

然后

git submodule update --init
mkdir build_grpc
cd build_grpc
cmake ..
sudo make install


第二次用下面的编译参数
cmake -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2r -DOPENSSL_LIBRARIES=/usr/local/Cellar/openssl/1.0.2r/lib ..
sudo make install

如果提示 Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
就安装下 下面的
sudo apt-get install libssl-dev

 

以下是原文章

选择合适的目录安装 grpc
git clone https://github.com/grpc/grpc.git
    git tag -l -n 命令可以查看所有的版本
    切换到合适的稳定版本
    v1.21.3         Merge pull request #19206 from stanley-cheung/bump-to-1_21_3
    比如我当前最新的文档版是 v1.21.3
    也可以 直接去 https://github.com/grpc/grpc/releases 下载 最新的
git submodule update --init
mkdir build_grpc
cd build_grpc
cmake -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2r -DOPENSSL_LIBRARIES=/usr/local/Cellar/openssl/1.0.2r/lib ..
sudo make install

 

我的 protobuf 是已经安装好的。

编译出例程

再进入 examples/cpp/helloworld 目录下
mkdir build
cmake ..
运行 greeter_server
再运行 greeter_client
控制台打印出 hello world 表示安装成功

 

windows 下  不能使用!

这个可能是我当前下载的版本导致的。   我猜测, 换成稳定版本,这个问题应该就可以解决了。
安装[Active State Perl](https://www.activestate.com/activeperl/) 注册个账号就可以下载了
安装[Go](https://golang.org/dl/) 
安装[yasm](http://yasm.tortall.net/) 并将其路径添加环境变量PATH

mkdir vs2015
cd vs2015
cmake .. -G "Visual Studio 14 2015"
cmake --build . --config Release
可以编译出来, 但是 不知道为什么编译成功后,无法和其他系统下的rpc服务器交互
且 客户端只能用 localhost:50051 才能和 windows上的 服务器交互
用 ip:50051 都不行。

 

一份 cmake 参考   小心的编辑 

记得把 下面两个文件加到工程中,

${CMAKE_CURRENT_BINARY_DIR}/zyfactory.grpc.pb.cc
${CMAKE_CURRENT_BINARY_DIR}/zyfactory.pb.cc

否则  COMMAND ${_PROTOBUF_PROTOC} 

并不会去生成 grpc 相应的 cpp 文件。

 

 

写给自己看的,方便将来 改改 后 创建新的工程

# This branch assumes that gRPC and all its dependencies are already installed
# on this system, so they can be located by find_package().

# Find Protobuf installation
# Looks for protobuf-config.cmake file installed by Protobuf's cmake installation.
set(protobuf_MODULE_COMPATIBLE TRUE)
find_package(Protobuf CONFIG REQUIRED)
message(STATUS "Using protobuf ${protobuf_VERSION}")

set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
set(_PROTOBUF_PROTOC $<TARGET_FILE:protobuf::protoc>)

# Find gRPC installation
# Looks for gRPCConfig.cmake file installed by gRPC's cmake installation.
find_package(gRPC CONFIG REQUIRED)
message(STATUS "Using gRPC ${gRPC_VERSION}")

set(_GRPC_GRPCPP_UNSECURE gRPC::grpc++_unsecure)
set(_GRPC_CPP_PLUGIN_EXECUTABLE $<TARGET_FILE:gRPC::grpc_cpp_plugin>)

# Proto file
get_filename_component(hw_proto "../../protos/zyfactory.proto" ABSOLUTE)
get_filename_component(hw_proto_path "${hw_proto}" PATH)

add_custom_command(
      OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/zyfactory.pb.cc" "${CMAKE_CURRENT_BINARY_DIR}/zyfactory.pb.h" "${CMAKE_CURRENT_BINARY_DIR}/zyfactory.grpc.pb.cc" "${CMAKE_CURRENT_BINARY_DIR}/zyfactory.grpc.pb.h"
      COMMAND ${_PROTOBUF_PROTOC}
      ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR}"
        --cpp_out "${CMAKE_CURRENT_BINARY_DIR}"
        -I "${hw_proto_path}"
        --plugin=protoc-gen-grpc="${_GRPC_CPP_PLUGIN_EXECUTABLE}"
        "${hw_proto}"
      DEPENDS "${hw_proto}")


# Include generated *.pb.h files
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
include_directories(${PROJECT_SOURCE_DIR}/src/base)
include_directories(${PROJECT_SOURCE_DIR}/include)

set(UA_BRIDGE_SRC 
  bridgeapp.cc
  ../opcclient.cc
  ../hook_opclog.cc
  opcs.cc
  api.cc
  bconf.cc
  ${CMAKE_CURRENT_BINARY_DIR}/zyfactory.grpc.pb.cc
  ${CMAKE_CURRENT_BINARY_DIR}/zyfactory.pb.cc
)
add_library(zyfactory_uabridge
  ${UA_BRIDGE_SRC})
target_link_libraries(zyfactory_uabridge
  zyfactory_base)

message(STATUS "PROJECT_SOURCE_DIR : ${PROJECT_SOURCE_DIR}")
message(STATUS "SYS_LIBS : ${SYS_LIBS}")

add_executable(ua-bridge
  main.cc
  ${PROJECT_SOURCE_DIR}/3rd/open62541/open62541.c
  )

target_link_libraries(ua-bridge
  zyfactory_base
  zyfactory_uabridge
  ${_GRPC_GRPCPP_UNSECURE}
  ${_PROTOBUF_LIBPROTOBUF}
  ${SYS_LIBS})

add_custom_command(TARGET ua-bridge POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/config/* ${BIN_DIR}
)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值