LoginSignup
0
0

More than 5 years have passed since last update.

gRPCをVisual Studio C++(2013)でビルドする

Posted at

最近話題のgRPCを、MSVC++(2013)でビルドしてみた。一応動作まではさせてるけど、長くなるのでこのTIPSではビルドまでとする。もうβなのに、Windowsで使おうとすると色々バグっぽいものがあった。

環境

このTIPSでは、以下の環境を使用して評価・検証を行っている。

項目 内容
OS Windows 10 pro 32bit (Parallel Desktop)
Machine MacBook Pro (Retina, 13-inch, Mid 2014)
MSVC++ 2013 update5
CMake 3.3.1
gRPC Beta Release 0.11.0
protobuf Version 3.0.0-beta-1

ビルド

gRPCを適当なフォルダにgit cloneしてくる。
gRPCは様々なsubmoduleを持っているので、悪いこと言わんからZIPとかで落とさないこと。

protobufのビルド

grpはprotobufのv3以上に依存している。opensslとかは、gRPC内のvsprojectでNugetパッケージ指定されているので自動で持ってきてくれるが、protobufは自分でビルドしないといけなかった。protobuf v3にはvsprojectが含まれていないので、CMakeList.txtからvsprojectを生成する必要がある。
なお、当初MSVC++ 2015を使ってビルドしようとしたが、Releaseモードのみリンクエラーが出てビルドできなかった。調べてみると、自分だけではないみたい。仕方がないのでMSVC++2013をインストールしたけど、今はもう直ってるくさい(未確認)

cmakeでvsprojectを生成

cmakeを起動して、ソースコードディレクトリとビルドディレクトリを指定する。両方とも、protobufのcmakeフォルダを指定すること。(grpc/third-party/protobuf/cmake)
指定したら真ん中あたりのConfigureボタンを押す。
スクリーンショット 2015-09-17 14.32.45.png

生成するvsprojectのバージョンを選んでしばらくすると、エラーがでる。これは依存するテスト関連モジュールが見つからないかららしい。BUILD_TESTのチェックを外して再度Configureを押す。さらっとConfigure Doneと言ってくるのですかさずGenerate。
スクリーンショット 2015-09-17 14.42.30.png

ビルドする

grpc/third-party/protobuf/cmake配下に生成されたprotobuf.slnを開き、ビルドする。
細かいことは考えなくてよいはず。

gRPCのビルド

したごしらえ

gRPCにはvsprojectsが付属しているので、ポチポチ押すだけでビルドできる。ところが、ビルドは成功するんだけどクライアント側の動作に問題がでる。この問題は既にGitHubにissueとして上がっていて、vsprojectを変更することで回避できる。具体的には、拡張子がvcxprojなファイルに含まれる全ての"_USE_32BIT_TIME_T;"を、""に置換してやればいい。(ダブルコーテーションは説明用につけてる。実際は含まない)該当箇所は数千箇所あるので、sakuraなりなんなりでgrep置換しよう。

ビルドする

grpc/vsprojects配下の
grpc.sln
grpc_csharp_ext.sln
grpc_protoc_plugins.sln

をそれぞれ開いてビルドする。
Release-DLLとかDebug-DLLとかいうビルドモードがあるが、C#用のビルドオプションであり、C++向けのDLLにしてくれるわけではないようだ。

以上でビルドが完了するはず。お疲れ様でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0