Versión 1.1 do sistema de compilación Meson

Publicouse a versión do sistema de compilación Meson 1.1.0, que se usa para construír proxectos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. O código Meson está escrito en Python e está licenciado baixo a licenza Apache 2.0.

O obxectivo clave de desenvolvemento de Meson é proporcionar un proceso de montaxe de alta velocidade combinado con comodidade e facilidade de uso. En lugar de facer, a compilación usa o conxunto de ferramentas Ninja de forma predeterminada, pero tamén se poden usar outros backends como xcode e VisualStudio. O sistema ten incorporado un controlador de dependencias multiplataforma que che permite usar Meson para crear paquetes para distribucións. As regras de montaxe están establecidas nunha linguaxe simplificada específica do dominio, son ben lexibles e comprensibles para o usuario (segundo a idea dos autores, o desenvolvedor debería dedicar un mínimo de tempo a escribir regras).

Admítese a compilación cruzada e a creación en Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows mediante GCC, Clang, Visual Studio e outros compiladores. É posible construír proxectos en varias linguaxes de programación, incluíndo C, C++, Fortran, Java e Rust. Admítese un modo de compilación incremental, no que só se reconstruíron os compoñentes que están directamente relacionados cos cambios realizados desde a última compilación. Meson pódese usar para xerar compilacións repetibles, onde a execución da compilación en diferentes ambientes dá lugar a executables completamente idénticos.

Principais innovacións de Meson 1.1:

  • Engadiuse un novo argumento "obxectos:" a declare_dependency() para anexar obxectos directamente aos executables como dependencias internas que non requiren link_who.
  • O comando "meson devenv --dump" ten a capacidade opcional de especificar un ficheiro no que escribir variables de ambiente, en lugar de emitir ao fluxo de saída estándar.
  • Engadíronse os métodos FeatureOption.enable_if e FeatureOption.disable_if para facilitar a creación de condicionais en preparación para pasar parámetros á función dependency(). opt = get_option('feature').disable_if(not foo, error_message : 'Non se pode activar a función cando foo non está activado') dep = dependency('foo', require: opt)
  • Permítese pasar obxectos xerados entre os argumentos "obxectos:".
  • A función do proxecto admite a instalación de ficheiros con información sobre as licenzas do proxecto.
  • Executar "sudo meson install" garante o restablecemento dos privilexios durante a reconstrución das plataformas de destino.
  • O comando "instalar meson" ofrece a posibilidade de especificar un controlador separado para obter permisos de root (por exemplo, pode seleccionar polkit, sudo, opendoas ou $MESON_ROOT_CMD). Executar "instalación de mesón" en modo non interactivo xa non tenta elevar os privilexios.
  • Engadiuse compatibilidade para ler opcións do ficheiro meson.options en lugar de meson_options.txt.
  • Forneceu a redirección a stderr da saída de información sobre o progreso da introspección.
  • Engadiuse un novo backend "none" (--backend=none) para crear proxectos que só teñan regras de instalación e sen regras de compilación.
  • Engadiuse unha nova dependencia pybind11 para que dependency('pybind11') funcione con pkg-config e cmake sen usar o script pybind11-config.
  • As opcións "--reconfigure" e "--wipe" (meson setup --reconfigure builddir e meson setup --wipe builddir ) están permitidas cun builddir baleiro.
  • meson.add_install_script() engadiu compatibilidade coa palabra clave dry_run, que che permite executar os teus propios scripts de instalación cando chamas "meson install --dry-run".

Fonte: opennet.ru

Engadir un comentario