MongoDBをCのアプリケーションから使うためのライブラリであるMongoDB C Driver (libmongoc)とBSON library (libbson)のビルド手順。
公式を参考にした。
環境
- windows8.1
- Visual Studio Community 2017および2015
- cmake 3.9.0
手順
ここから最新のmongo-c-driver-x.y.z
を落とす。今回はmongo-c-driver-1.14.0.tar.gz
を使用。
GitBashで実行する
tar -zxf mongo-c-driver-x.y.z
cd mongo-c-driver-x.y.z
mkdir cmake-build
cd cmake-build
GitBashで実行する
cmake -G "Visual Studio 15 2017 Win64" \
"-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver" \
"-DCMAKE_PREFIX_PATH=C:\mongo-c-driver" \
..
実行後、ALL_BUILD.vcxproj
をはじめ、プロジェクトファイル等が生成される。
MSBuild.exe
を使うので、MSBuild.exe
がある場所のパスを環境変数に入れておく。筆者の場合は下記。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
試したことなど:
- このあと、
ALL_BUILD.vcxproj
をビルドする。MSBuild.exe
およびVS2017
でビルドしたが失敗。winsock2.h
がないと言われる。 - 生成されたプロジェクトファイルはインクルードディレクトリに
C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\um
、ライブラリディレクトリにC:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0\um\x64
を参照している。これらのディレクトリは筆者の環境にはなく、代わりに番号部分が10.0.15063.0のものがあった。 -
ALL_BUILD.vcxproj
にこのパスを設定しても解決しなかった。生成されたプロジェクトすべて(50個ほど)に設定して試すのは気が引けたので、VS2015
なら行けるかと思いそちらをインストール。 -
VS2015
でも無理だった。しかし、
powershellで実行する
MSBuild.exe ALL_BUILD.vcxproj
ビルドに成功しました。
0 個の警告
0 エラー
ビルドに成功した。続けて、
powershellで実行する
msbuild.exe INSTALL.vcxproj`
ビルドに成功しました。
0 個の警告
0 エラー経過時間 00:00:27.92
インストールできた。
生成されたライブラリ等のファイルはC:\mongo-c-driver
にある。(CMAKE_INSTALL_PREFIX
で設定されている場所)
振り返り
- 今思えば、バージョン
10.0.14393.0
のWindows 10 SDKをインストールしていれば2015なしでも行けそうな気がする。 -
VS2015
をインストールしても先述のWindows Kits
配下にバージョン10.0.14393.0
のディレクトリができていなかったので、どこを参照してwinsock2.h
を見つけたのか不明。 - スペースを含む絶対パスをコマンドプロンプトに渡すときにエラーが出て困った。(結局は環境変数にパスを登録して回避した)