注:我的配置过程参照《Installing the mongocxx driver》官方文档完成,记录我本机的配置过程,过程中可能会有遗漏,所以完整配置过程,建议参照官方配置文档进行。
1 安装MongoDB C Driver
mongocxx驱动依赖于MongoDB C的驱动,所以需要先安装MongoDB C Driver。
- 对于3.1.x版本的mongocxx需要安装1.5.0及以上的libmongoc
- 对于3.0.x版本的mongocxx推荐使用最新的1.4.x版本libmongoc
配置安装过程如下:
-
安装XCode命令行工具
$ xcode-select --install
-
使用Homebrew安装编译配置工具
$ brew install automake autoconf libtool pkgconfig
-
下载解压libmongoc源码
$ tar xzf mongo-c-driver-1.6.2.tar.gz $ cd mongo-c-driver-1.6.2
-
编译安装
$ ./configure $ make $ sudo make install
2 下载mongocxx driver
官方文档中提供了两种方式下载驱动,一种是从github上clone源码,另一种是从release页面下载。
我采用的是从github上clone最新的稳定版源码:
git clone https://github.com/mongodb/mongo-cxx-driver.git \
--branch releases/stable --depth 1
3 cmake配置
默认情况下第一步中的libmongoc库会安装在<code>/usr/local</code>下,如果libmongoc没有安装在默认路径,则cmake配置需要配置<code>PKG_CONFIG_PATH</code>和<code>DCMAKE_INSTALL_PREFIX</code>
此外,cmake的配置还需要针对不同系统选择<code>polyfill</code>,例如我的系统是MacOS,配置的选项选择<code>-DBSONCXX_POLY_USE_MNMLSTC=1</code>。
配置如下:
cmake -DCMAKE_BUILD_TYPE=Release -DBSONCXX_POLY_USE_MNMLSTC=1 \
-DCMAKE_INSTALL_PREFIX=/usr/local ..
4 编译安装
在使用非Windows平台下,使用默认的MNMLSTC polyfill,还需要额外编译安装一个MNMLSTC的核心组件:
sudo make EP_mnmlstc_core
之后编译安装mongocxx driver即可:
make && sudo make install
至此,整个驱动就安装完成了,使用时,添加对应的编译选项即可。
5 测试
官方提供测试代码:
#include <iostream>
#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
int main(int, char**) {
mongocxx::instance inst{};
mongocxx::client conn{mongocxx::uri{}};
bsoncxx::builder::stream::document document{};
auto collection = conn["testdb"]["testcollection"];
document << "hello" << "world";
collection.insert_one(document.view());
auto cursor = collection.find({});
for (auto&& doc : cursor) {
std::cout << bsoncxx::to_json(doc) << std::endl;
}
}
使用pkg-config编译:
c++ --std=c++11 test.cpp -o test $(pkg-config --cflags --libs libmongocxx)
如果没有报错则测试成功。具体数据库操作请查看官方mongo api。
注:使用Homebrew安装工具的过程可能会碰到:权限或不能使用sudo模式的问题,解决方法是在命令行运行:<code>sudo chown -R $(whoami) /usr/local</code>命令可解决。