美文网首页MongoDBC++程序员
MacOS下配置MongoDB C++ Driver

MacOS下配置MongoDB C++ Driver

作者: 佳斐猫 | 来源:发表于2017-04-24 11:56 被阅读148次

    注:我的配置过程参照《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

    配置安装过程如下:

    1. 安装XCode命令行工具

       $ xcode-select --install
      
    2. 使用Homebrew安装编译配置工具

       $ brew install automake autoconf libtool pkgconfig
      
    3. 下载解压libmongoc源码

       $ tar xzf mongo-c-driver-1.6.2.tar.gz
       $ cd mongo-c-driver-1.6.2
      
    4. 编译安装

       $ ./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>命令可解决。

    相关文章

      网友评论

        本文标题:MacOS下配置MongoDB C++ Driver

        本文链接:https://www.haomeiwen.com/subject/ijzuzttx.html