Esta página detalla cómo descargar, descomprimir, configurar y compilar las librerías libbson y libmongoc a partir de su código fuente.
Tip
Información extra
Las admoniciones (como esta) contienen información extra y detalles explicativos que no son necesarios para completar el tutorial, pero pueden ser útiles para lectores curiosos y usuarios más avanzados que deseen una explicación sobre el significado de ciertos pasos del tutorial.
La siguiente página utiliza algunas variables con nombre para representar información de configuración, como $VERSION. Debes elegir valores para estas variables antes de comenzar el tutorial. Cuando vea una variable mencionada en un paso del tutorial, sustitúyala por su valor.
Tip
Antes de compilar las librerías, verifica que estés ejecutando la aplicación en una plataforma compatible. Para la lista de plataformas compatibles, consulta la página de compatibilidad.
Elige una versión
Antes de comenzar, asegúrese de saber qué versión de mongo-c-driver va a descargar. Puede encontrar una lista de las versiones disponibles en la página de etiquetas del repositorio de GitHub. Este tutorial documenta la versión actual del controlador, v...13010
Para el resto de esta página, $VERSION se referirá al número de versión de mongo-c-driver que construirás para este tutorial.
Obteniendo la fuente
Obtenga el código fuente de mongo-c-driver de una de las siguientes maneras:
Clona el repositorio utilizando
git(recomendado). Para obtener más información, consulte Descargar usando Git.Descarga un fichero fuente en una versión específica. Para más información, consulta Descargando un fichero de Lanzamiento.
Importante
Se recomienda encarecidamente que los nuevos usuarios utilicen una versión estable publicada del controlador, en lugar de compilar desde una rama de desarrollo. Cuando git clone o descargue un fichero del repositorio, asegúrese de especificar una etiqueta de lanzamiento (por ejemplo, con el argumento --branch de Git).
Descargando utilizando Git
Puedes clonar el repositorio del controlador C desde GitHub usando Git. Las etiquetas Git para las versiones publicadas se nombran según la versión a la que corresponden (por ejemplo,1 3010".."). Para clonar el repositorio desde la línea de comandos, usa el siguiente comando:
$ git clone https://github.com/mongodb/mongo-c-driver.git --branch="$VERSION" "$SOURCE"
Tip
A pesar de su nombre, puede utilizar la opción --branch del comando git-clone para clonar a partir de etiquetas de repositorio.
Descargando un fichero de lanzamiento
Puedes obtener una instantánea archivada del repositorio de controladores C desde la página de versiones del repositorio. Cada versión incluye un mongo-c-driver-x.y.z.tar.gz archivo, que contiene el conjunto mínimo de archivos que necesitarás para la compilación.
## Download using wget: $ wget "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.tar.gz" \ --output-document="mongo-c-driver-$VERSION.tar.gz" ## Extract using tar: $ tar xf "mongo-c-driver-$VERSION.tar.gz"
Los comandos anteriores crean el directorio mongo-c-driver-$VERSION dentro del directorio donde los ejecutaste, que es la raíz del árbol de código fuente del controlador. Esta documentación se refiere a este directorio como $SOURCE. El directorio $SOURCE contiene el archivo CMakeLists.txt de nivel superior.
## Using curl: $ curl "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.tar.gz" \ --output="mongo-c-driver-$VERSION.tar.gz" ## Extract using tar: $ tar xf "mongo-c-driver-$VERSION.tar.gz"
Los comandos anteriores crean el directorio mongo-c-driver-$VERSION dentro del directorio donde los ejecutaste, que es la raíz del árbol de código fuente del controlador. Esta documentación se refiere a este directorio como $SOURCE. El directorio $SOURCE contiene el archivo CMakeLists.txt de nivel superior.
## Use Invoke-WebRequest: PS> $url = "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.zip" PS> $file = "mongo-c-driver-$VERSION.zip" PS> Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $file ## Extract using Expand-Archive: PS> Expand-Archive mongo-c-driver-$VERSION.zip
Los comandos anteriores crean el directorio mongo-c-driver-$VERSION dentro del directorio en el que se ejecutaron. El directorio mongo-c-driver-$VERSION contiene un segundo directorio mongo-c-driver-$VERSION, que es la raíz del árbol de código fuente del driver. Esta documentación se refiere a este directorio como $SOURCE. El directorio $SOURCE contiene el archivo de nivel superior CMakeLists.txt.
Obtención de prerrequisitos
Debes instalar CMake para configurar los libmongoc libbson proyectos y. Te recomendamos encarecidamente que descargues la última versión estable de CMake disponible para tu plataforma.
Selecciona la pestaña correspondiente a tu sistema operativo y sigue las instrucciones para descargar CMake:
Visita la página de descargas de CMake.
Descargue el archivo
.msio.dmgde CMake y utilícelo para instalar CMake.
Visita la página de descargas de CMake
Descarga el script shell autoextraíble, que termina con
.sh.Ejecuta el script utilizando la utilidad
shy pasando los argumentos apropiados para realizar la instalación. Por ejemplo, con el CMake 3.27.0 en la plataformax86_64, ejecuta el siguiente comando:sh cmake-3.27.0-linux-x86_64.sh --prefix="$HOME/.local" --exclude-subdir --skip-license Suponiendo que
$HOME/.local/binesté en tu lista de$PATH, el comandocmakepara 3.27.0 estará entonces disponible.La opción
--helpse puede pasar al script de shell para obtener más información.
Esta página asume que cmake está disponible como un comando en tu variable de entorno PATH y puede ejecutarse como "cmake" desde una shell. Puedes probar esto solicitando el --version de CMake desde la línea de comandos, como se muestra en el siguiente código:
cmake --version cmake version 3.21.4 CMake suite maintained and supported by Kitware (kitware.com/cmake).
Nota
Si tienes la intención de compilar libbson únicamente, entonces CMake es suficiente para la compilación. Las funcionalidades adicionales del driver C pueden requerir la instalación de dependencias externas adicionales, pero aquí no nos preocuparemos por ellas.
Configuración para libbson
Importante
Si estás construyendo con Xcode [1] o Visual Studio [2], es posible que debas ejecutar CMake dentro de un entorno especial en el que esté disponible la respectiva toolchain.
Deja que el nombre $BUILD sea la ruta $SOURCE/_build. Este será el directorio donde CMake escribirá nuestros archivos compilados.
Con el directorio de origen de mongo-c-driver en $SOURCE y el directorio de compilación $BUILD, se puede ejecutar el siguiente comando desde una línea de comandos para configurar el Proyecto con ambos libbson y libmongoc:
$ cmake -S $SOURCE -B $BUILD \ -D ENABLE_EXTRA_ALIGNMENT=OFF \ -D ENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF \ -D CMAKE_BUILD_TYPE=RelWithDebInfo \ -D BUILD_VERSION="$VERSION" \ -D ENABLE_MONGOC=OFF
Si se cumplen todas las dependencias, el comando anterior debería tener éxito y finalizar con:
$ cmake … ## … (Lines of output) … -- Generating done -- Build files have been written to: $BUILD
Si la configuración falló con un error, consulte la salida de CMake para obtener mensajes de error e información. Asegúrese de que la configuración se complete correctamente antes de continuar.
Tip
¿Qué significan estos argumentos de CMake?
El BUILD_VERSION configura el número de versión que se incluirá en los resultados de la compilación. Esto debe configurarse con el mismo valor que la versión del controlador de origen que fue descargada en Obtención del origen.
El ENABLE_EXTRA_ALIGNMENT y el ENABLE_AUTOMATIC_INIT_AND_CLEANUP forman parte de mongo-c-driver y corresponden a funcionalidades obsoletas que solo se habilitan por defecto para fines de compatibilidad ABI. Se recomienda encarecidamente deshabilitar estas funcionalidades cuando sea posible.
El argumento ENABLE_MONGOC=OFF desactivó la compilación de libmongoc. Lo construiremos en la siguiente sección.
La CMAKE_BUILD_TYPE configuración indica a CMake qué variante de código se generará. En el caso RelWithDebInfo de, se producirán binarios optimizados, pero que aún incluirán información de depuración. La opción CMAKE_BUILD_TYPE no afecta a los generadores de configuraciones múltiples (por ejemplo, Visual Studio), que en su lugar utilizan la --config opción al compilar o instalar.
Construyendo el proyecto
Después de configurar exitosamente el Proyecto, se puede ejecutar el compilar utilizando CMake:
$ cmake --build $BUILD --config RelWithDebInfo --parallel
Si está debidamente configurado y todas las dependencias están satisfechas, entonces el comando anterior debería proceder a compilar y vincular los componentes configurados. Si el comando anterior falla, es probable que haya un error en su entorno o que esté utilizando una plataforma no compatible o no probada. Consulta la salida de la herramienta de compilar para obtener más información.
Tip
La opción --config
La opción --config se utiliza para definir la configuración de compilación que se va a usar en el caso de generadores Multi-Config (es decir, Visual Studio). No tiene ningún efecto sobre otros generadores, que en su lugar utilizan CMAKE_BUILD_TYPE.
Instalando los resultados ya compilados
Que $PREFIX sea la ruta $SOURCE/_install. Podemos usar CMake para instalar los resultados compilados:
$ cmake --install "$BUILD" --prefix "$PREFIX" --config RelWithDebInfo
Este comando instalará los resultados de compilación mongo-c-driver en el directorio $PREFIX.
Tip
La opción --config
La opción --config sólo se utiliza para generadores multi-configuración (es decir, Visual Studio) y de lo contrario se ignora. El valor dado para --config debe ser el mismo que se dio para --config con cmake --build.
Tip
Gestión de versiones de la librería
Instalar el MongoDB C Driver desde el código fuente o usando un gestor de paquetes instala archivos que utilizan nombres y rutas con versiones. Para evitar la necesidad de actualizar su configuración de compilar cuando actualice el driver, puede utilizar los mecanismos estándar de detección de dependencias de su sistema de compilar, como el comando find_package() de CMake. También puedes usar las convenciones de enlaces simbólicos de la librería compartida de tu plataforma en lugar de codificar directamente los nombres completos de archivos de la librería o rutas de instalación.
Configurando con libmongoc
If you followed the above steps starting from Configuring for libbson, your final result with only contain libbson and not the full C database driver library. Building of libmongoc is enabled/disabled using the ENABLE_MONGOC CMake variable. Re-run CMake again, but set ENABLE_MONGOC to TRUE:
$ cmake -D ENABLE_MONGOC=ON -B $BUILD -S $SOURCE
Si el comando anterior se ejecuta correctamente, el proyecto se habrá reconfigurado para compilarse libmongoc con. Siga nuevamente el proceso descrito en "Compilación del proyecto e instalación de los resultados" para compilar e libmongoc instalar.
Notas al pie
| [1] | Si deseas configurar y compilar el proyecto con Xcode, las herramientas de línea de comandos de Xcode deben estar instaladas y disponibles en el entorno. Desde un entorno de línea de comandos, ejecuta lo siguiente: Esto asegurará que los compiladores y vinculadores estén disponibles en su |
| [2] | Si desea configurar y compilar el proyecto con Microsoft Visual C++, es posible que deba establecer las herramientas de Visual C++ y las variables de entorno al ejecutar cualquier comando de CMake o de compilación. En muchos casos, CMake detecta la instalación de Visual Studio y carga automáticamente el entorno al ejecutarse. Esta detección automática se puede controlar con las Para un mayor control y más opciones de herramientas, se recomienda ejecutar comandos desde un PowerShell para desarrolladores de Visual Studio (preferido) o un símbolo del sistema para desarrolladores (heredado). Para obtener más información, consulte: Símbolo del sistema para desarrolladores de Visual Studio y PowerShell para desarrolladores, y Uso del conjunto de herramientas de Microsoft C++ desde la línea de comandos en las páginas de documentación de Microsoft Visual Studio. |