在Windows上构建mongocxx驱动程序时出错

时间:2016-09-30 19:21:34

标签: c++ mongodb mongo-cxx-driver

我正在尝试关注this guide,我目前正处于第3步。

跑完后,

curl -OL https://github.com/mongodb/mongo-cxx-driver/archive/r3.0.1.tar.gz
tar -xzf r3.0.1.tar.gz
cd mongo-cxx-driver-r3.0.1/

我尝试执行Windows guide for mongoc中的类似命令:

如果我这样做

cmake -G "Visual Studio 14 2015 Win64" "-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_INSTALL_PREFIX=C:/mongo-cxx-driver"

我收到错误

CMake Error at cmake/FindLibBSON.cmake:37 (message):
  Don't know how to find libbson; please set LIBBSON_DIR to the prefix
  directory with which libbson was configured.
Call Stack (most recent call first):
  src/bsoncxx/CMakeLists.txt:67 (find_package)

所以在这里我尝试了不同的东西,比如添加libsson目录的路径:

cmake -G "Visual Studio 14 2015 Win64" "-DCMAKE_BUILD_TYPE=Release" "-DCMAKE_INSTALL_PREFIX=C:/mongo-cxx-driver" "-DLIBBSON_DIR=C:/mongo-c-driver/lib/pkgconfig/" "-DLIBMONGOC_DIR=C:/mongo-c-driver/lib/pkgconfig/" "-DBOOST_ROOT=C:/local/boost_1_62_0/"

这实际上有效,但是当我尝试用

构建时
msbuild.exe ALL_BUILD.vcxproj

我收到错误:

C:\Users\Erik\Documents\mongo-cxx-driver-r3.0.1\src\bsoncxx\array\view.cpp(21): fatal error C1083: Cannot open include
 file: 'bson.h': No such file or directory [C:\Users\Erik\Documents\mongocxx-driver-r3.0.1\src\bsoncxx\bsoncxx_static.v
cxproj]

此文件," bson.h"似乎存在于直率

C:\mongo-c-driver\include\libbson-1.0

但我不确定为什么它找不到该文件或我如何能够这样做。

非常感谢您的任何意见。

2 个答案:

答案 0 :(得分:4)

您没有正确设置includelib。在您的情况下,它们应设置为CMAKE_INSTALL_PREFIX。构建系统将根据需要自动将LIBBSON_DIRLIBMONGOC_DIR添加到该基本路径。您可能会发现阅读有关信息的appveyor脚本:

答案 1 :(得分:0)

2016年10月18日

此问题也适用于Mac OS X,也可能适用于其他Un * xes。

  1. 使用3.0.2版(至少)。 (官方指南提到3.0.1,但3.0.2中修复了bug
  2. curl -OL https://github.com/mongodb/mongo-cxx-driver/archive/r3.0.2.tar.gz
    
    1. 我没有更改为build目录,而是更改为根目录:
    2. cd mongo-cxx-driver-r3.0.2 
      
      1. 如果C mongo驱动程序(和libbson)不在默认目录中,请告诉cmake命令,并说我们使用的是现代C ++(11,14,...)。在我的情况下:C mongo驱动程序在/ opt / mongodbDriverCpp上(与C ++ mongo驱动程序相同的地方)。
      2. cmake -DCMAKE_BUILD_TYPE=Release 
        -DCMAKE_INSTALL_PREFIX=/opt/mongodbDriverCpp 
        -DLIBBSON_DIR=/opt/mongodbDriverCpp  
        -DLIBMONGOC_DIR=/opt/mongodbDriverCpp 
        -DCMAKE_CXX_STANDARD=14
        
        1. 制作并安装
        2. make
          
          make install 
          
          1. 从官方指南编译测试的命令(将/opt/mongodbDriverCpp更改为您的正确目录):
          2. c++ --std=c++11 test.cpp -o run.test 
            -I/opt/mongodbDriverCpp/include/bsoncxx/v_noabi 
            -I /opt/mongodbDriverCpp/include/mongocxx/v_noabi/ 
            -L /opt/mongodbDriverCpp/lib 
            -l mongocxx 
            -l bsoncxx
            
            1. 运行(首先启动mongodb服务器)
            2. export LD_LIBRARY_PATH=/opt/mongodbDriverCpp/lib
              
              ./run.test