在 Windows 上构建 mongocxx 驱动程序时出错
Error when building mongocxx driver on Windows
我正在尝试遵循 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
但我不确定为什么找不到该文件或我如何才能找到该文件。
非常感谢对此的任何意见。
您没有正确设置 LIBBSON_DIR
和 LIBMONGOC_DIR
。在您的情况下,它们应该都设置为 C:\mongo-c-driver
。构建系统会根据需要自动将 include
和 lib
添加到该基本路径。您可能会发现阅读 appveyor 脚本很有帮助:
- 注意此处 libmongoc 的
CMAKE_INSTALL_PREFIX
:https://github.com/mongodb/mongo-cxx-driver/blob/master/appveyor.yml#L25
- 然后在为 mongocxx 调用 CMake 时在此处设置
LIBBSON_DIR
和 LIBMONGOC_DIR
:https://github.com/mongodb/mongo-cxx-driver/blob/master/appveyor.yml#L31
2016 年 10 月 18 日
这个问题也发生在 Mac OS X 上,也可能发生在其他 Un*x 上。
- 使用版本 3.0.2(至少)。 (官方指南提到了3.0.1,但是在3.0.2中固定了一个bug)。
curl -OL https://github.com/mongodb/mongo-cxx-driver/archive/r3.0.2.tar.gz
- 我没有换到
build
目录,而是换到根目录:
cd mongo-cxx-driver-r3.0.2
- 如果 C mongo 驱动程序(和 libbson)不在默认目录中,请将其告知 cmake 命令,并说明我们正在使用现代 C++(11、14、... ).在我的例子中:C mongo 驱动程序在 /opt/mongodbDriverCpp 上(与放置 C++ mongo 驱动程序的相同位置)。
cmake -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=/opt/mongodbDriverCpp
-DLIBBSON_DIR=/opt/mongodbDriverCpp
-DLIBMONGOC_DIR=/opt/mongodbDriverCpp
-DCMAKE_CXX_STANDARD=14
- 制作并安装
make
make install
- 从官方指南编译测试的命令(更改
/opt/mongodbDriverCpp
到您正确的目录):
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
- 运行(先启动mongo数据库服务器)
export LD_LIBRARY_PATH=/opt/mongodbDriverCpp/lib
./run.test
我正在尝试遵循 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
但我不确定为什么找不到该文件或我如何才能找到该文件。
非常感谢对此的任何意见。
您没有正确设置 LIBBSON_DIR
和 LIBMONGOC_DIR
。在您的情况下,它们应该都设置为 C:\mongo-c-driver
。构建系统会根据需要自动将 include
和 lib
添加到该基本路径。您可能会发现阅读 appveyor 脚本很有帮助:
- 注意此处 libmongoc 的
CMAKE_INSTALL_PREFIX
:https://github.com/mongodb/mongo-cxx-driver/blob/master/appveyor.yml#L25 - 然后在为 mongocxx 调用 CMake 时在此处设置
LIBBSON_DIR
和LIBMONGOC_DIR
:https://github.com/mongodb/mongo-cxx-driver/blob/master/appveyor.yml#L31
2016 年 10 月 18 日
这个问题也发生在 Mac OS X 上,也可能发生在其他 Un*x 上。
- 使用版本 3.0.2(至少)。 (官方指南提到了3.0.1,但是在3.0.2中固定了一个bug)。
curl -OL https://github.com/mongodb/mongo-cxx-driver/archive/r3.0.2.tar.gz
- 我没有换到
build
目录,而是换到根目录:
cd mongo-cxx-driver-r3.0.2
- 如果 C mongo 驱动程序(和 libbson)不在默认目录中,请将其告知 cmake 命令,并说明我们正在使用现代 C++(11、14、... ).在我的例子中:C mongo 驱动程序在 /opt/mongodbDriverCpp 上(与放置 C++ mongo 驱动程序的相同位置)。
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/mongodbDriverCpp -DLIBBSON_DIR=/opt/mongodbDriverCpp -DLIBMONGOC_DIR=/opt/mongodbDriverCpp -DCMAKE_CXX_STANDARD=14
- 制作并安装
make make install
- 从官方指南编译测试的命令(更改
/opt/mongodbDriverCpp
到您正确的目录):
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
- 运行(先启动mongo数据库服务器)
export LD_LIBRARY_PATH=/opt/mongodbDriverCpp/lib ./run.test