CMake方式コンパイルgRPC

1232 ワード

まず、gRPCソースコードをローカルにダウンロードします.
  • git clone https://github.com/grpc/grpc.git

  • 指定したバージョンのみをダウンロードしたい場合は、バージョン「1.27.3」を例に挙げると、次の文に変更できます.
  • git clone -b v1.27.3 https://github.com/grpc/grpc.git

  • 上記の操作が正常に完了すると、gRPCソースコードのサードパーティ依存ディレクトリthird_partyは実際には空であり、依存するサードパーティを次の手順で引き出す必要があります.grpcディレクトリに切り替え、grpcサードパーティ依存をローカルにダウンロードします.
  • git submodule update --init

  • grpc依存サードパーティライブラリは少し多く、「git submodule」を借りなければ、手作業でダウンロードするのは容易ではありません.
    なお、gRPCはCMake 3.5を要求する.1以上のバージョンのCMake、そうでないと「CMake 3.5」とエラーが発生します.1 or higher is required“.
    次の問題が発生した場合は、サードパーティ製ライブラリの準備ができていないことを示します.
    CMake Warning at cmake/abseil-cpp.cmake:30 (message):
    gRPC_ABSL_PROVIDER is “module” but ABSL_ROOT_DIR is wrong:
    /data/grpc/grpc-1.27.3/third_party/abseil-cpp
    Call Stack (most recent call first):
    CMakeLists.txt:188 (include)
  • gRPCコンパイル生成c++コード例(依存プラグインgrpc_cpp_plugin):
  • protoc --proto_path=. --grpc_out=. --plugin=protoc-gen-grpc= which grpc_cpp_plugin service.proto
  • gRPCコンパイル生成goコード例(依存プラグインprotoc-gen-go):
  • protoc --proto_path=. --go_out=plugins=grpc,paths=source_relative:. service.proto
    一般的にgrpc_をcpp_pluginとprotoc-gen-goは/usr/local/binディレクトリの下に配置されます.