前言
本人属于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
- Where is th source code: 填写CMakeLists.txt文件所在路径,如:G:\mongo-c-driver-1.17.1
- Where to build the binaries : 填写通过CMakeList.txt生成的 vs工程所在路径,如:G:\mongo-c-driver-1.17.1\MSVC
- 点击Configure,进行配置文件生成,选择VS 15 2017, x64(根据自身需求选择)
- [可选步骤] 点击Add Entry,添加如下配置
Name:DCMAKE_INSTALL_PREFIX
Type :PATH
Value:G:\mongo-c-driver-1.17.1\bin
并取消 ENABLE_UNINSTALL
此步骤是开启INSTALL工程环境,并添加输出路径。否则无法使用INSTALL工程编译 - 点击Grenerate, 进行vs工程生成
- 进入G:\mongo-c-driver-1.17.1\MSVC,选择mongo-c-driver.sln 打开工程
- 选择ALL_BUILD / INSTALL进行编译
Cmake 控制台命令
- 使用Ctrl/Command + R 打开运行
- 输入cmd打开控制台
- 进入目录G:\mongo-c-driver-1.17.1\MSVC
- 在此目录下输入命令:
- cmake -G “Visual Studio 15 2017 Win64”
-DCMAKE_INSTALL_PREFIX=G:\mongo-c-driver-1.17.1\bin .. - 进入G:\mongo-c-driver-1.17.1\MSVC,选择mongo-c-driver.sln 打开工程
- 选择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 控制台命令
- 使用Ctrl/Command + R 打开运行
- 输入cmd打开控制台
- 进入目录G:\mongo-cxx-driver-3.6.0\MSVC
- 在此路径下输入命令:
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库请自行编译 - 进入G:\mongo-cxx-driver-3.6.0\MSVC,选择mongo-cxx-driver.sln 打开工程
- 选择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 的静态库编译,但工程连接静态库会报无法解析的外部符号,希望有大神前来指点