Docs Menu
Docs Home
/ /

Incluye y vincula el driver en tu programa

En esta guía, puede aprender a utilizar CMake y pkg-config para incluir el controlador C++ en su proyecto.

Los ejemplos de esta página utilizan el Programa de ejemploview_and_value.cpp del código fuente del controlador C++. Obtenga el código fuente del controlador C++ siguiendo las instrucciones. Guíade descarga e instalación.

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 ejecutar este programa en un servidor MongoDB.

Los ejemplos de esta página hacen referencia a los destinos de bibliotecas de controladores de C++. Los ejemplos de la sección CMake utilizan el mongo::bsoncxx_shared destino, y los de la sección pkg-config utilizan el libbsoncxx paquete. Puede utilizar los siguientes destinos de biblioteca alternativos, según 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.

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

En las siguientes secciones, si encuentra errores, es posible que deba especificar opciones adicionales al comando inicial de CMake. Las opciones específicas dependen de su entorno. Sin embargo, las siguientes opciones solucionan los problemas más comunes:

  • Si su compilador no tiene como valor predeterminado al menos C++17, utilice 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 C++, puede utilizar el comando find_package de CMake para integrar el controlador con su proyecto.

Tip

Para aprender a instalar el controlador C++, visita las siguientes guías:

Para usar el comando find_package, cree un archivo CMakeLists.txt en el directorio del proyecto. El siguiente ejemplo crea un archivo CMakeLists.txt en el directorio del proyecto /home/user/project1 que usa 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, ejecute 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. Una vez finalizada, ejecute el ejecutable generado en el paso anterior:

$ ./build/view_and_value

La salida se parece 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, puede usar el comando add_subdirectory de CMake sin instalar el controlador de C++. Esta es una técnica avanzada que, a diferencia del comando find_package, no permite especificar restricciones de versión.

Nota

Es posible que deba ajustar las opciones de compilación de su proyecto para adaptar este enfoque. La invocación de CMake en su proyecto debe incluir las opciones y opciones que normalmente se pasan al controlador de C++ durante la compilación.

Para usar el comando add_subdirectory, cree un archivo CMakeLists.txt en el directorio del proyecto. El siguiente ejemplo crea un archivo CMakeLists.txt en el directorio del proyecto /home/user/project2 que usa 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 destino CMake bsoncxx_shared sin el espacio de nombres mongo::. El espacio de nombres se añade durante la instalación del módulo CMake, lo cual no se realiza en este enfoque.

Luego, ejecute 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. Una vez finalizada, ejecute el ejecutable generado en el paso anterior:

$ ./build/view_and_value

La salida se parece 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 su proyecto no está basado en CMake, puede usar pkg-config para integrar el controlador de C++. Dado que pkg-config ofrece menos flexibilidad que CMake, recomendamos usar el enfoque basado en CMake siempre que sea posible.

Solo puede utilizar el controlador C++ con pkg-config si instala completamente el controlador.

El siguiente código usa pkg-config para incluir y vincular el controlador de C++. Reemplace el marcador <path-to-mongo-cxx-driver-sources> con la ubicación del árbol de código fuente del controlador de C++ en su 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 comando anterior para proyectos más complejos o sistemas de compilación específicos dependiendo de cómo consuman los paquetes pkg-config.

Volver

Configuración e instalación avanzadas

En esta página