Mongo-C-Driver及Mongo-CXX-Driver的编译及使用

商开济
2023-12-01

前言

本人属于CMake小白,如有不足还望各位大神斧正.

Linux 下使用 Cmake与 Windows下使用控制台命令大致相同,可自行研究

Mongo-C-Driver : 可以使用Cmake命令行及Cmake-GUI进行编译
Mongo-CXX-Driver : 可以使用Cmake命令行进行编译,Cmake-GUI会报无法找到bson库,添加路径以后依然无法生成工程,还希望大神指点迷津

Linux

Windows

环境

Widows : win10
VS : 2017
Cmake-GUI : 3.18.1
Python : 3.6.6
Boost : 1.72.0
Mongo-C-Drive: 1.17.1
Mongo-CXX-Driver: 3.6.0

Mongo-C-Driver

版本信息

git: https://github.com/mongodb/mongo-c-driver
tar:http://mongoc.org/

Cmake-GUI

  1. Where is th source code: 填写CMakeLists.txt文件所在路径,如:G:\mongo-c-driver-1.17.1
  2. Where to build the binaries : 填写通过CMakeList.txt生成的 vs工程所在路径,如:G:\mongo-c-driver-1.17.1\MSVC
  3. 点击Configure,进行配置文件生成,选择VS 15 2017, x64(根据自身需求选择)
  4. [可选步骤] 点击Add Entry,添加如下配置
    Name:DCMAKE_INSTALL_PREFIX
    Type :PATH
    Value:G:\mongo-c-driver-1.17.1\bin
    并取消 ENABLE_UNINSTALL
    此步骤是开启INSTALL工程环境,并添加输出路径。否则无法使用INSTALL工程编译
  5. 点击Grenerate, 进行vs工程生成
  6. 进入G:\mongo-c-driver-1.17.1\MSVC,选择mongo-c-driver.sln 打开工程
  7. 选择ALL_BUILD / INSTALL进行编译

Cmake 控制台命令

  1. 使用Ctrl/Command + R 打开运行
  2. 输入cmd打开控制台
  3. 进入目录G:\mongo-c-driver-1.17.1\MSVC
  4. 在此目录下输入命令:
  5. cmake -G “Visual Studio 15 2017 Win64”
    -DCMAKE_INSTALL_PREFIX=G:\mongo-c-driver-1.17.1\bin ..
  6. 进入G:\mongo-c-driver-1.17.1\MSVC,选择mongo-c-driver.sln 打开工程
  7. 选择INSTALL进行编译

命令解释:
-G “Visual Studio 15 2017 Win64” :使用VS2017编译工具,并编译X64版本
-DCMAKE_INSTALL_PREFIX=G:\mongo-c-driver-1.17.1\bin :指定mongoc库文件及include文件导出路径
.. :CMakeLists.txt文件所在路径,同GUI中的步骤1;因为当前控制台命令所在路径为G:/mongo-c-driver-1.17.1/MSVC,所以..即为上一级路径G:/mongo-c-driver-1.17.1

Mongo-CXX-Driver

Mongo-CXX-Driver 方式同 Mongo-C-Driver 大同小异,其中GUI方式生成工程失败,希望有专业人士可以指点迷津

版本信息

git: https://github.com/mongodb/mongo-cxx-driver
tar:https://github.com/mongodb/mongo-cxx-driver/releases

Cmake 控制台命令

  1. 使用Ctrl/Command + R 打开运行
  2. 输入cmd打开控制台
  3. 进入目录G:\mongo-cxx-driver-3.6.0\MSVC
  4. 在此路径下输入命令:
    cmake -G “Visual Studio 15 2017 Win64”
    -DBSONCXX_POLY_USE_BOOST=1
    -DCMAKE_PREFIX_PATH=G:\mongo-c-driver-1.17.1\bin
    -DBOOST_ROOT=G:\ThirdLib\boost_1_72_0
    -DCMAKE_INSTALL_PREFIX=mongo-cxx-driver-3.6.0\bin ..


    cmake -G “Visual Studio 15 2017 Win64”
    -DCMAKE_CXX_STANDARD=17
    -DCMAKE_CXX_FLAGS=/Zc:__cplusplus
    -DCMAKE_PREFIX_PATH=G:\mongo-c-driver-1.17.1\bin
    -DCMAKE_INSTALL_PREFIX=G:\mongo-cxx-driver-3.6.0\bin ..

    分别进行有boost和无boost的版本项目生成,boost库请自行编译
  5. 进入G:\mongo-cxx-driver-3.6.0\MSVC,选择mongo-cxx-driver.sln 打开工程
  6. 选择INSTALL进行编译

命令解释:
-DCMAKE_CXX_STANDARD=17 :C++17标准,在官方声明中与下一个选项共同出现。没有该选项,则必须指定boost库路径
-DCMAKE_CXX_FLAGS=/Zc:__cplusplus :官方声明:为了使用Visual Studio 2017进行构建,有必要配置其他选项/Zc:__cplusplus以选择__cplusplus
-DBSONCXX_POLY_USE_BOOST=1 :使用boost库,如果未指定C++17标准,择必须打开此选项
-DBOOST_ROOT=G:\ThirdLib\boost_1_72_0 :boost库文件路径
-DCMAKE_PREFIX_PATH=G:\mongo-c-driver\bin :mongoc库文件所在路径

另:
添加-DBUILD_SHARED_LIBS_WITH_STATIC_MONGOC=ON-DBUILD_SHARED_AND_STATIC_LIBS=ON 可实现mongo-cxx-driver 的静态库编译,但工程连接静态库会报无法解析的外部符号,希望有大神前来指点

 类似资料: