#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 информативным:
- Обратите
CMAKE_INSTALL_PREFIX
внимание на libmongoc здесь: https://github.com/mongodb/mongo-cxx-driver/blob/master/appveyor.yml#L25 - А затем настройка
LIBBSON_DIR
иLIBMONGOC_DIR
здесь при вызове CMake для mongocxx: https://github.com/mongodb/mongo-cxx-driver/blob/master/appveyor.yml#L31
Комментарии:
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 и, возможно, с другими приложениями.
- Используйте версию 3.0.2 (как минимум). (В официальном руководстве упоминается 3.0.1, но в 3.0.2 исправлена ошибка).
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= Выпуск -DCMAKE_INSTALL_PREFIX=/opt/mongodbDriverCpp -DLIBBSON_DIR=/opt/mongodbDriverCpp -DLIBMONGOC_DIR=/opt/mongodbDriverCpp -DCMAKE_CXX_STANDARD=14
- Создайте и установите
сделать выполнить установку
- Команда для компиляции теста из официального руководства (перейдите
/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
- Выполнить (сначала запустите сервер mongodb)
экспорт LD_LIBRARY_PATH=/opt/mongodbDriverCpp/lib ./run.test