Ошибка при сборке драйвера mongocxx в Windows

#c #mongodb #mongo-cxx-driver

#c #mongodb #mongo-cxx-driver

Вопрос:

Я пытаюсь следовать этому руководству, и в настоящее время я нахожусь на шаге 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 для 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:UsersErikDocumentsmongo-cxx-driver-r3.0.1srcbsoncxxarrayview.cpp(21): fatal error C1083: Cannot open include
 file: 'bson.h': No such file or directory [C:UsersErikDocumentsmongocxx-driver-r3.0.1srcbsoncxxbsoncxx_static.v
cxproj]
  

Похоже, что этот файл «bson.h» находится в директории

 C:mongo-c-driverincludelibbson-1.0
  

но я не уверен, почему он не находит файл или как я мог бы это сделать.

Очень признателен за любой вклад в это.

Комментарии:

1. Спасибо за подробное описание — это значительно упростило обнаружение ошибки. У меня есть ответ ниже, который, я думаю, разблокирует вас.

Ответ №1:

Вы неправильно LIBBSON_DIR и LIBMONGOC_DIR правильно устанавливаете. В вашем случае для них обоих должно быть установлено значение C:mongo-c-driver . Система сборки автоматически добавит include и lib к этому базовому пути по мере необходимости. Вы можете найти чтение скрипта appveyor информативным:

Комментарии:

1. самый потрясающий. щедрость придет через 11 часов.

2. Спасибо! Рад помочь.

3. Ссылки разорваны.

4. @ShawnicHedgehog — Похоже, интеграция с appveyor была удалена, потому что я думаю, что сборки Windows были добавлены в конфигурацию evergreen. Посмотрите здесь: github.com/mongodb/mongo-cxx-driver/blob/master/.mci.yml#L48

Ответ №2:

18 октября 2016 г.

Эта проблема также возникает с Mac OS X и, возможно, с другими приложениями.

  1. Используйте версию 3.0.2 (как минимум). (В официальном руководстве упоминается 3.0.1, но в 3.0.2 исправлена ошибка).
curl -OL https://github.com/mongodb/mongo-cxx-driver/archive/r3.0.2.tar.gz
  1. Я не перешел в build каталог, а в корень:
cd mongo-cxx-driver-r3.0.2 
  1. Если драйвера C mongo (и libbson) нет в каталоге по умолчанию, сообщите об этом команде cmake, а также скажите, что мы используем современный C (11, 14, …). В моем случае: драйвер C mongo находится в /opt/mongodbDriverCpp (там же, где нужно установить драйвер C mongo).
cmake -DCMAKE_BUILD_TYPE= Выпуск 
-DCMAKE_INSTALL_PREFIX=/opt/mongodbDriverCpp 
-DLIBBSON_DIR=/opt/mongodbDriverCpp 
-DLIBMONGOC_DIR=/opt/mongodbDriverCpp 
-DCMAKE_CXX_STANDARD=14
  1. Создайте и установите
сделать

выполнить установку 
  1. Команда для компиляции теста из официального руководства (перейдите /opt/mongodbDriverCpp в нужный каталог):
c    --std=c    11 test.cpp -o запуск.тест 
-I/opt/mongodbDriverCpp/include/bsoncxx/v_noabi 
-I /opt/mongodbDriverCpp/include/mongocxx/v_noabi/ 
-L /opt/mongodbDriverCpp/lib 
-l mongocxx 
-l bsoncxx
  1. Выполнить (сначала запустите сервер mongodb)
экспорт LD_LIBRARY_PATH=/opt/mongodbDriverCpp/lib

./run.test