Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Incluye y vincula el driver en tu programa

En esta guía, puedes aprender cómo usar CMake y pkg-config para incluir el controlador C++ en tu proyecto.

Los ejemplos en esta página usan el view_and_value.cpp programa de ejemplo del código fuente del driver de C++. Obtenga el código fuente del controlador de C++ siguiendo el Descarga e instala la guía.

En las siguientes secciones, sustituya <path-to-mongo-cxx-driver-sources> por la ruta real donde está el árbol de origen del controlador C++ en su sistema.

No es necesario que ejecutes este programa en un servidor de MongoDB.

Los ejemplos en esta página hacen referencia a los destinos de la librería del driver C++. Los ejemplos de la sección CMake usan el destino mongo::bsoncxx_shared, y los ejemplos de la sección pkg-config usan el paquete libbsoncxx. Puede utilizar los siguientes objetivos alternativos de librerías, dependiendo de las necesidades de su Proyecto:

  • CMake: - mongo::bsoncxx_shared - mongo::mongoccxx_shared - mongo::bsoncxx_static - mongo::mongoccxx_static

  • pkg-config: - libbsoncxx - libmongocxx - libbsoncxx-static - libmongocxx-static

La disponibilidad de objetivos depende del método de instalación particular.

Puedes usar CMake para incluir el controlador de C++ en tu proyecto. CMake proporciona el comando find_package, que su proyecto puede usar para localizar el driver de C++ una vez instalado. Como alternativa, tu proyecto puede utilizar el comando avanzado add_subdirectory sin instalar el controlador de C++.

En las siguientes secciones, si encuentras errores, es posible que necesites especificar opciones adicionales al comando CMake inicial. Las opciones específicas dependen de tu entorno particular. No obstante, las siguientes opciones abordan la mayoría de los problemas comunes:

  • Si tu compilador no configura por defecto al menos C++17, utiliza la opción -DCMAKE_CXX_STANDARD=17 de CMake.

  • Si instaló el controlador en una ubicación no estándar, especifique la opción -DCMAKE_PREFIX_PATH=/<path-to-mongo-cxx-driver-installation>. Por ejemplo:

cmake -Bbuild -DCMAKE_CXX_STANDARD=17 -DCMAKE_PREFIX_PATH=/opt/mongodb/cxx-driver

Después de instalar el controlador de C++, puedes usar el comando find_package de CMake para integrar el controlador con tu proyecto.

Tip

Para aprender cómo instalar el controlador de C++, visita las siguientes guías:

Para usar el comando find_package, crea un archivo CMakeLists.txt en el directorio de tu proyecto. El siguiente ejemplo crea un archivo CMakeLists.txt en el directorio del proyecto /home/user/project1 que utiliza find_package:

/home/usuario/proyecto1/CMakeLists.txt
cmake_minimum_required (VERSION 3.15)
project (builder_basic LANGUAGES CXX)
find_package (bsoncxx 4.0 REQUIRED)
add_executable (view_and_value /<path-to-mongo-cxx-driver-sources>/examples/bsoncxx/view_and_value.cpp)
# we need target_include_directories because view_and_value.cpp refers to a common example header
target_include_directories (view_and_value PRIVATE /<path-to-mongo-cxx-driver-sources>)
target_link_libraries (view_and_value PRIVATE mongo::bsoncxx_shared)

Luego, ejecutar los siguientes comandos para compilar su proyecto:

$ cd /home/user/project1
$ cmake -Bbuild
$ cmake --build build

Estos comandos devuelven información sobre el proceso de compilación. Después de que se complete la compilación, ejecuta el ejecutable producido en el paso anterior:

$ ./build/view_and_value

La salida es similar a la siguiente:

{ "team" : "platforms", "id" : { "$oid" : "66f4be6fef9eb8b9240619f0" }, "members" : [ "tyler", "jason", "drew", "sam", "ernie", "john", "mark", "crystal" ] }
Got key, key = team
Got String!
Got key, key = id
Got ObjectId!
Got key, key = members
Got Array!
array element: tyler
array element: jason
array element: drew
array element: sam
array element: ernie
array element: john
array element: mark
array element: crystal
as expected, we have a team
document has 3 keys.
document keys are:
team
id
members

Como alternativa, puedes utilizar el add_subdirectory comando de CMake sin instalar el controlador de C++. Esta es una técnica avanzada que, a diferencia del comando find_package, no soporta la especificación de restricción de versión.

Nota

Es posible que debas ajustar las banderas de compilación de tu proyecto para acomodar este enfoque. La invocación de tu Proyecto de CMake debe incluir cualquier bandera u opción que normalmente se pase al driver de C++ como parte de su compilación.

Para usar el comando add_subdirectory, crea un archivo CMakeLists.txt en el directorio de tu proyecto. El siguiente ejemplo crea un archivo CMakeLists.txt en el directorio del proyecto /home/user/project2 que utiliza add_subdirectory:

/home/usuario/proyecto2/CMakeLists.txt
cmake_minimum_required (VERSION 3.15)
project (builder_basic LANGUAGES CXX)
# specify a source_dir which is out-of-tree from this project, so also specify bin_dir
add_subdirectory (/<path-to-mongo-cxx-driver-sources> ./build/mongo-cxx-driver)
add_executable (view_and_value /<path-to-mongo-cxx-driver-sources>/examples/bsoncxx/view_and_value.cpp)
# we need target_include_directories because view_and_value.cpp refers to a common example header
target_include_directories (view_and_value PRIVATE /<path-to-mongo-cxx-driver-sources>)
# no mongo:: namespace prefix, since the targets are use directly without installation
target_link_libraries (view_and_value PRIVATE bsoncxx_shared)

Nota

El ejemplo anterior utiliza el objetivo bsoncxx_shared CMake sin el namespace mongo::. El namespace se agrega como parte de la instalación del módulo CMake, la cual no se realiza con este enfoque.

Luego, ejecutar los siguientes comandos para compilar su proyecto:

$ cd /home/user/project1
$ cmake -Bbuild
$ cmake --build build

Estos comandos devuelven información sobre el proceso de compilación. Después de que se complete la compilación, ejecuta el ejecutable producido en el paso anterior:

$ ./build/view_and_value

La salida es similar a la siguiente:

{ "team" : "platforms", "id" : { "$oid" : "67207dcf532837a4470cc090" }, "members" : [ "tyler", "jason", "drew", "sam", "ernie", "john", "mark", "crystal" ] }
Got key, key = team
Got String!
Got key, key = id
Got ObjectId!
Got key, key = members
Got Array!
array element: tyler
array element: jason
array element: drew
array element: sam
array element: ernie
array element: john
array element: mark
array element: crystal
as expected, we have a team
document has 3 keys.
document keys are:
team
id
members

Si tu proyecto no está basado en CMake, puedes utilizar pkg-config para integrar el controlador C++ con tu proyecto. Debido a que pkg-config proporciona menos flexibilidad que CMake, recomendamos utilizar el enfoque basado en CMake siempre que sea posible.

Solo puedes usar el controlador C++ con pkg-config si instalas completamente el controlador.

El siguiente código utiliza pkg-config para incluir y vincular el controlador C++. Reemplaza el marcador <path-to-mongo-cxx-driver-sources> con la ubicación del árbol de fuentes del controlador de C++ en tu sistema:

$ c++ /<path-to-mongo-cxx-driver-sources>/examples/bsoncxx/view_and_value.cpp $(pkg-config --cflags libbsoncxx) -I/<path-to-mongo-cxx-driver-sources> $(pkg-config --libs libbsoncxx) -o view_and_value
$ ./view_and_value
{ "team" : "platforms", "id" : { "$oid" : "67207262672b96dc3b0fc150" }, "members" : [ "tyler", "jason", "drew", "sam", "ernie", "john", "mark", "crystal" ] }
Got key, key = team
Got String!
Got key, key = id
Got ObjectId!
Got key, key = members
Got Array!
array element: tyler
array element: jason
array element: drew
array element: sam
array element: ernie
array element: john
array element: mark
array element: crystal
as expected, we have a team
document has 3 keys.
document keys are:
team
id
members

Puede adaptar la línea de comandos anterior para proyectos más complejos o sistemas de compilación específicos, dependiendo de cómo consuman los paquetes de pkg-config.

Volver

Configuración e instalación avanzadas

En esta página