Articulo de referencia

Mesón (software)

Meson ( / ˈ m ɛ . s ɒ n / ) [ 2 ] es una herramienta de automatización de compilación de software para construir una base de código . Meson adopta un enfoque de convención sobre...

Meson ( / ˈ m ɛ . s ɒ n / ) [ 2 ] es una herramienta de automatización de compilación de software para construir una base de código . Meson adopta un enfoque de convención sobre configuración para minimizar los datos necesarios para configurar las operaciones más comunes. [ 3 ] Meson es software libre y de código abierto bajo la Licencia Apache 2.0 . [ 4 ]

Meson está escrito en Python y se ejecuta en sistemas tipo Unix (incluidos Linux y macOS ), Windows y otros sistemas operativos. Admite la compilación de C , C++ , C# , CUDA , Objective-C , D , Fortran , Java , Rust y Vala . [ 5 ] Maneja las dependencias a través de un mecanismo llamado Wrap . Admite GNU Compiler Collection (gcc), Clang , Visual C++ y otros compiladores, incluidos compiladores no tradicionales como Emscripten y Cython . [ 6 ] El proyecto utiliza ninja como sistema de compilación principal, pero también puede utilizar los backends de Visual Studio o Xcode .

Se mejoró la compatibilidad de Meson con Fortran y Cython para ayudar a varios proyectos científicos en su transición de setuptools a Meson, por ejemplo SciPy . [ 7 ] Meson se puede usar como un backend PEP517 para construir ruedas de Python , a través del paquete meson-python . [ 8 ]

Idioma

La sintaxis de los archivos de descripción de compilación de Meson, el lenguaje Meson, toma prestada de Python , pero no es Python. Está diseñado para que pueda reimplementarse en cualquier otro lenguaje; [ 9 ] por ejemplo, muon [ 10 ] es una implementación en C, y Meson++ [ 11 ] es una implementación en C++. La dependencia de Python es un detalle de implementación.

El lenguaje Meson no es intencionadamente Turing-completo y, por lo tanto, no puede expresar un programa arbitrario. [ 9 ] En cambio, los pasos de construcción arbitrarios más allá de la compilación de los lenguajes compatibles pueden representarse como objetivos personalizados.

El lenguaje Meson es fuertemente tipado , de modo que los tipos integrados como biblioteca, ejecutable, cadena y sus listas no son intercambiables. [ 12 ] En particular, a diferencia de Make , el tipo lista no divide las cadenas por espacios en blanco. [ 9 ] Por lo tanto, los espacios en blanco y otros caracteres en los nombres de archivo y los argumentos del programa se manejan correctamente.

Velocidad y precisión

Como ocurre con cualquier sistema de compilación típico, las compilaciones incrementales correctas son la característica más importante para la velocidad (porque todo el progreso incremental se descarta cuando el usuario se ve obligado a realizar una compilación limpia).

A diferencia de Make sin configuración adicional, el paso de configuración independiente garantiza que los cambios en los argumentos, las variables de entorno y la salida de los comandos no se apliquen parcialmente en compilaciones posteriores, lo que daría lugar a una compilación obsoleta.

Al igual que Ninja, Meson no admite la inclusión de comodines en los archivos fuente. [ 9 ] Al requerir que todos los archivos fuente se listen en los archivos de definición de compilación, las marcas de tiempo de estos archivos son suficientes para determinar si el conjunto de archivos fuente ha cambiado, asegurando así que se detecten los archivos fuente eliminados. CMake admite la inclusión de comodines, pero no la recomienda por la misma razón. [ 13 ]

Meson utiliza ccache automáticamente si está instalado. [ 14 ] También detecta cambios en las tablas de símbolos de las bibliotecas compartidas para omitir el re-enlace de los ejecutables con la biblioteca cuando no hay cambios en la ABI . Se admiten encabezados precompilados , pero requieren configuración. [ 15 ] Las compilaciones de depuración no tienen optimización por defecto.

Características

Un objetivo declarado de Meson es facilitar las prácticas de desarrollo modernas. Por lo tanto, Meson sabe cómo hacer compilaciones de Unity , [ 16 ] compilaciones con cobertura de pruebas , [ 17 ] etc., sin que el programador tenga que escribir soporte para esto.

Subproyectos

Meson puede encontrar y usar automáticamente las dependencias externas instaladas en el sistema del usuario a través de pkg-config , CMake y búsquedas específicas del proyecto. [ 18 ] Alternativamente, o como alternativa, una dependencia puede proporcionarse como un subproyecto (un proyecto Meson dentro de otro), ya sea contenido o como un enlace de descarga, posiblemente con parches. [ 19 ] Esto permite que Meson resuelva el infierno de las dependencias para la comodidad de los usuarios ocasionales que desean compilar el proyecto, pero puede contribuir a la sobrecarga del software si se pudiera haber utilizado una dependencia común instalada. Por lo tanto, el modo preferido por los empaquetadores de Linux es la alternativa. [ 20 ]

Meson admite subproyectos de Meson y CMake. Un archivo de compilación de Meson también puede hacer referencia al servicio WrapDB. [ 19 ]

Compilación cruzada

La compilación cruzada requiere configuración adicional, que Meson admite en forma de un archivo cruzado separado , que puede ser externo al proyecto Meson. [ 21 ]

Configuración del directorio de instalación

Meson se encarga automáticamente de configurar el directorio de instalación de la biblioteca en sistemas Unix x86_64, pero no otras herramientas como Autotools.

Adoptantes

GNOME se ha propuesto como objetivo portar sus proyectos a Meson. [ 22 ] Desde finales de 2017, GNOME Shell requiere exclusivamente Meson tras abandonar Autotools , [ 23 ] y componentes centrales como GTK+ , Clutter-GTK, GLib y GStreamer pueden compilarse con Meson. [ 22 ]

Muchos proyectos de freedesktop.org han cambiado a Meson. Systemd depende de Meson desde que dejó de usar Autotools en la versión 234, [ 24 ] y también X.Org [ 25 ] y Mesa [ 26 ] fueron portados a Meson.

Comparación de características

Comparación de características con CMake y Make .

Véase también

Referencias

  1. "Versión 1.11.2" . 11 de julio de 2026. Consultado el 11 de julio de 2026 .
  2. 1 2 "Cómo hacer que los sistemas de compilación no sean un desastre (video de linux.conf.au)" . YouTube . 16 de enero de 2015.
  3. "Sistema de compilación de alta productividad" . 30 de enero de 2025. Meson tiene como objetivo optimizar la productividad del programador al proporcionar soporte sencillo e integrado para herramientas y prácticas modernas de desarrollo de software, como pruebas unitarias, informes de cobertura, Valgrind, CCache y similares.
  4. "mesonbuild/meson: El sistema de compilación de Meson" . GitHub . Consultado el 13 de abril de 2016 .
  5. "Manual de referencia" .
  6. "Identificadores de compilador" .
  7. "Cómo compilar SciPy con Meson" .
  8. "Paquete meson-python en PyPI" .
  9. 1 2 3 4 "Preguntas frecuentes sobre Meson" .
  10. "muon.build" . Consultado el 27 de enero de 2023 .
  11. Baker, Dylan (28 de mayo de 2021). "dcbaker/meson-plus-plus" . GitHub . Consultado el 28 de mayo de 2021 .
  12. "Sintaxis de Meson" .
  13. "Comando CMake FILE" . Nota: No recomendamos usar GLOB para recopilar una lista de archivos fuente de su árbol de código fuente. Si el archivo CMakeLists.txt no cambia al agregar o eliminar un archivo fuente, el sistema de compilación generado no puede saber cuándo solicitar a CMake que se regenere.
  14. "Autodetección de características" .
  15. "Encabezados precompilados" .
  16. "Unity compila" .
  17. "Pruebas unitarias" .
  18. "Dependencias con funcionalidad de búsqueda personalizada — Documentación de Meson" .
  19. 1 2 "Manual del sistema de dependencias Wrap" .
  20. "Meson y dependencias de terceros. Solo hay una forma correcta" .
  21. "Compilación cruzada" .
  22. 1 2 "Objetivo de GNOME: Portar módulos para usar el sistema de compilación Meson" .
  23. "GNOME 3.26 Beta debuta: Más adaptaciones de Meson, novedades de Wayland" .
  24. "Dejar de dar soporte a autotools" . GitHub .
  25. "El soporte para Meson ya está disponible en el servidor X.Org" .
  26. "Los desarrolladores de Mesa se acercan a abandonar el sistema de compilación Autotools en favor de Meson" .
  27. "Make no recursivo considerado perjudicial" (PDF) . Microsoft . El Make recursivo se considera perjudicial por muy buenas razones (Miller 1998); no es posible realizar un seguimiento preciso de las dependencias cuando el sistema de compilación está construido con componentes separados que se invocan entre sí.
  28. "Make test does not depend of make all" . Rastreador de problemas de Kitware . 23 de junio de 2016. Consultado el 3 de septiembre de 2020 .
  29. "Soporte de CMake para encabezados precompilados" . Consultado el 13 de marzo de 2018 .
  30. "FetchContent — Documentación de CMake 3.15.7" .
  • Sitio web oficialEdita esto en Wikidata