CMake方式コンパイルgRPC
まず、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= 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ディレクトリの下に配置されます.
指定したバージョンのみをダウンロードしたい場合は、バージョン「1.27.3」を例に挙げると、次の文に変更できます.
上記の操作が正常に完了すると、gRPCソースコードのサードパーティ依存ディレクトリthird_partyは実際には空であり、依存するサードパーティを次の手順で引き出す必要があります.grpcディレクトリに切り替え、grpcサードパーティ依存をローカルにダウンロードします.
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)
which grpc_cpp_plugin
service.proto 一般的にgrpc_をcpp_pluginとprotoc-gen-goは/usr/local/binディレクトリの下に配置されます.