必要に迫られてWindows上なんぞで自前でビルドするはめに。バイナリ実行だけでいいならビルド済みのものをダウンロードすればよいが、ライブラリを使おうとするとビルドせにゃならない。Minicondaでインストール(libprotobuf-3.2.0)してパス通すだけではエラー吐いてリンクがうまくいかなかった(これが原因かも定かでない気もする)。
6/25 追記: どうも、Visual Studio でリンクしようとするとエラーがでるらしく、エラーを回避するためには自分でビルドする必要があったようだ。配布パッケージのcmake/libprotobuf.cmakeを編集する(最新版は編集済みだった)
- http://masahiroshiomi.jp/blog/vs2015/105/
- https://github.com/DouglasHeriot/protobuf/commit/ff955bea6fabc3e729b659f4a498a1feba0ac13a
以下をインストールしておく。
- Cmake 3.9.0 64bit版 (https://cmake.org/download/)
- Visual Studio Professional 2015
次に、ソースコードを以下のページからダウンロード。今回はC++でprotobufのライブラリを使いたいのでprotobuf-cpp-3.3.0.zipをダウンロードして、作業ディレクトリに展開。
Visual Studio 付属の開発コマンドプロンプトを起動。今回は64bitとしてビルドしたいが、のちのちコンパイルしたいコードに合わせて、x86_x64 cross tool(注1) を選択して起動。以下の公式ページの指示に従って、ビルド・インストール、できればよかったのだがすんなりはいかない。
- https://github.com/google/protobuf/blob/master/src/README.md
- https://github.com/google/protobuf/blob/master/cmake/README.md
以下のコマンドを実行した際、75%あたりでエラーがでる。
C:\Path\to\protobuf\cmake\build>mkdir release & cd release C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^ -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_INSTALL_PREFIX=../../../../install ^ ../..
まじかお、って感じだが、超困る。ここでちょうど数日前に書かれた記事(http://sgry.jp/blog/2017/06/17/4676/)を発見。この記事によると、Protocol Buffers 3.3.0に付属する単体テストのソースの一部にはUTF-8としても不正なデータ列が含まれており、不正なデータを拒否する処理が正しく行われるかをテストすらしい。ところが、日本語環境ではVisual StudioがShift JIS としてソースファイルを扱うために、不正なデータ列を処理する段階でエラーを吐くらしい、ガッデム。
仕方がないので、cmakeの前に
set _CL_=/utf-8
として、コンパイルオプションにUTF-8として処理するように設定を行えばよいらしい。実際この1行を追加したらnmakeは通った。
最後に以下を実行すれば、bin, include, lib, の3つのディレクトリが作られるので、パスに追加すればよい。
nmake install
注1: GUIのCMakeでVisual Studio 14 2015 64bit を選択すると x86_x64を選択してしまうので、統一しておいただけ・・・。