Versión 1.1 del sistema de compilación Meson

Se ha publicado el lanzamiento del sistema de compilación Meson 1.1.0, que se utiliza para compilar proyectos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME y GTK. El código de Meson está escrito en Python y tiene la licencia Apache 2.0.

El objetivo clave de desarrollo de Meson es proporcionar un proceso de ensamblaje de alta velocidad combinado con comodidad y facilidad de uso. En lugar de hacer, la compilación usa el kit de herramientas Ninja de forma predeterminada, pero también se pueden usar otros backends como xcode y VisualStudio. El sistema tiene un controlador de dependencia multiplataforma incorporado que le permite usar Meson para crear paquetes para distribuciones. Las reglas de ensamblaje se establecen en un lenguaje específico de dominio simplificado, son bien legibles y comprensibles para el usuario (según la idea de los autores, el desarrollador debe dedicar un mínimo de tiempo a escribir reglas).

Se admite la compilación cruzada y la compilación en Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS y Windows mediante GCC, Clang, Visual Studio y otros compiladores. Es posible construir proyectos en varios lenguajes de programación, incluidos C, C++, Fortran, Java y Rust. Se admite un modo de compilación incremental, en el que solo se reconstruyen los componentes que están directamente relacionados con los cambios realizados desde la última compilación. Meson se puede usar para generar compilaciones repetibles, donde ejecutar la compilación en diferentes entornos da como resultado ejecutables completamente idénticos.

Principales novedades de Meson 1.1:

  • Se ha agregado un nuevo argumento "objetos:" a declare_dependency() para adjuntar objetos directamente a los ejecutables como dependencias internas que no requieren link_who.
  • El comando "meson devenv --dump" tiene la capacidad opcional de especificar un archivo para escribir variables de entorno, en lugar de generar el flujo de salida estándar.
  • Se agregaron los métodos FeatureOption.enable_if y FeatureOption.disable_if para facilitar la creación de condicionales en preparación para pasar parámetros a la función dependency(). opt = get_option('feature').disable_if(not foo, error_message: 'No se puede habilitar la función cuando foo no está también habilitado') dep = dependencia('foo', requerido: opt)
  • Se permite pasar objetos generados entre los argumentos "objetos:".
  • La función de proyecto admite la instalación de archivos con información sobre licencias de proyectos.
  • La ejecución de "sudo meson install" garantiza el restablecimiento de privilegios durante la reconstrucción para las plataformas de destino.
  • El comando "meson install" ofrece la posibilidad de especificar un controlador independiente para obtener permisos de root (por ejemplo, puede seleccionar polkit, sudo, opendoas o $MESON_ROOT_CMD). Ejecutar "meson install" en modo no interactivo ya no intenta elevar los privilegios.
  • Se agregó soporte para leer opciones del archivo meson.options en lugar de meson_options.txt.
  • Redirección proporcionada a stderr de la salida de información sobre el progreso de la introspección.
  • Se ha agregado un nuevo backend "ninguno" (--backend=none) para crear proyectos que solo tienen reglas de instalación y no reglas de compilación.
  • Se agregó una nueva dependencia pybind11 para hacer que la dependencia ('pybind11') funcione con pkg-config y cmake sin usar el script pybind11-config.
  • Las opciones "--reconfigure" y "--wipe" (meson setup --reconfigure builddir y meson setup --wipe builddir ) están permitidas con un builddir vacío.
  • meson.add_install_script() agregó compatibilidad con la palabra clave dry_run, que le permite ejecutar sus propios scripts de instalación al llamar a "meson install --dry-run".

Fuente: opennet.ru

Añadir un comentario