2016-07-28 129 views
1

我试图构建mongo-cxx驱动程序(最终),第一步是构建mongo-c-driver(它需要libbson)。mongo-c-driver找不到libbson

我正在运行Windows 10并使用Visual Studio 2015作为我的编译器。我能够运行CMake并构建libbson,所有构建的项目都很好。现在我有和mongo-c-driver/src/libbson/build/Release/内置bson-static-1.0.lib的副本。这似乎是一切都是正确的。

下一步是构建mongo-c-driver。我跑CMake和尝试创建Visual Studio的解决方案,但得到的错误:

Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR) 
Searching for sasl/sasl.h 
    Not found (specify -DCMAKE_INCLUDE_PATH=C:/path/to/sasl/include for SASL support) 
Searching for libsasl2 
    Not found (specify -DCMAKE_LIBRARY_PATH=C:/path/to/sasl/lib for SASL support) 
Current version (from VERSION_CURRENT file): 1.3.5 
CMake Error: The following variables are used in this project, but they are set to NOTFOUND. 
Please set them or make sure they are set and tested correctly in the CMake files: 
BSON (ADVANCED) 
    linked by target "mongoc_shared" in directory C:/Users/sdf/Downloads/mongo-c-driver-1.3.5 
    linked by target "mongoc_static" in directory C:/Users/sdf/Downloads/mongo-c-driver-1.3.5 

Configuring incomplete, errors occurred! 
See also "C:/Users/sdf/Downloads/mongo-c-driver-1.3.5/build/CMakeFiles/CMakeOutput.log". 

它看起来像变量BSON未设置为正确的价值 - 它的价值是BSON-NOTFOUND现在。有没有人知道BSON的正确值是什么,并且在编译libbson的过程中是否应该自动设置?

回答

0

请严格按照“在Windows上安装”说明:

https://api.mongodb.com/c/current/installing.html#building-windows

看来你错过了,你构建libbson设置时CMAKE_INSTALL_PREFIX的部分,然后安装libbson和相同CMAKE_INSTALL_PREFIX建立libmongoc设置。

+0

嗨,我的答案是解决您的问题还是您需要更多信息? –

0

首先,你需要建立libbson SLN安装Project(运行VS在管理模式,因为它需要创建的lib文件夹,如Linux方式)

然后定义BSON_INCLUDE_DIR包括其中安装Project创建的文件夹和BSON到LIB文件构建例如C:/ Program Files文件/ libbson/lib目录/ BSON-静态1.0.lib在cmake的(这BSON命名是有问题的,应该改名为BSON_LIB)编制的MongoDB C++驱动

1

聪明的办法。使用vcpkg

按照git上提到的说明下载vcpkg。 https://github.com/Microsoft/vcpkg

步骤1 C:\ vcpkg> \ vcpkg搜索mongodb的

步骤2 C:\ vcpkg搜索MongoDB的安装蒙戈-CXX驱动

STAP 3 C:\ vcpkg> \ vcpkg整合安装

有用的链接。 https://stackoverflow.com/a/46981525/8617780

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/17761696) –

+0

你是对的,我编辑了我的答案。 @Jeff Zeitlin –