Versión 0.51 do sistema de compilación Meson

publicado versión do sistema de compilación Mesón 0.51, 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 subministrado licenciado baixo Apache 2.0.

O obxectivo fundamental do desenvolvemento de Meson é proporcionar unha alta velocidade do proceso de montaxe combinada coa comodidade e facilidade de uso. En lugar da utilidade make, a compilación predeterminada usa o conxunto de ferramentas ninja, pero tamén é posible 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 especifícanse nunha linguaxe simplificada específica do dominio, son moi lexibles e comprensibles para o usuario (como pretenden os 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, 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 o modo de compilación incremental, no que só se reconstruíron os compoñentes directamente relacionados cos cambios realizados desde a última compilación. Meson pódese usar para xerar compilacións repetibles, nas que a execución da compilación en diferentes ambientes dá lugar á xeración de ficheiros executables completamente idénticos.

O principal innovacións Mesón 0.51:

  • Engadido soporte para a construción transparente de proxectos existentes que usan scripts de compilación CMake. Meson agora pode construír directamente subproxectos sinxelos (como bibliotecas únicas) usando o módulo CMake, de xeito similar aos subproxectos estándar (incluíndo os subproxectos CMake pódense colocar no directorio de subproxectos);
  • Para todos os compiladores usados, as probas preliminares inclúense a través da montaxe e execución de ficheiros de proba sinxelos (verificación de cordura), sen limitarse a probar marcas especificadas polo usuario para compiladores cruzados (a partir de agora, tamén se verifican os compiladores nativos da plataforma actual) .
  • Engadiuse a posibilidade de definir as opcións de liña de comandos utilizadas durante a compilación cruzada, coa vinculación especificando un prefixo de plataforma antes da opción. Anteriormente, as opcións da liña de comandos só cubrían as compilacións nativas e non se podían especificar para a compilación cruzada. As opcións da liña de comandos agora aplícanse independentemente de se está a construír de forma nativa ou a compilación cruzada, garantindo que as compilacións nativas e cruzadas produzan resultados idénticos;
  • Engadida a posibilidade de especificar a marca "--cross-file" máis dunha vez na liña de comandos para listar varios ficheiros cruzados;
  • Engadido soporte para o compilador ICL (Compilador Intel C/C++) para a plataforma Windows (ICL.EXE e ifort);
  • Engadido soporte inicial do kit de ferramentas para CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • O método “get_variable” engadiuse ao obxecto “dependencia”, que permite obter o valor dunha variable sen ter en conta o tipo de dependencia actual (por exemplo, dep.get_variable(pkg-config : 'var- nome', cmake : 'COP_VAR_NAME));
  • Engadiuse un novo argumento de opcións de montaxe de destino, "link_language", para especificar explícitamente o idioma utilizado ao chamar ao enlazador. Por exemplo, un programa principal de Fortran podería chamar código C/C++, que seleccionaría automaticamente C/C++ cando se debería usar o enlazador Fortran;
  • Cambiouse o manexo das marcas do preprocesador CPPFLAGS. Mentres que Meson almacenaba anteriormente os CPPFLAGS e os indicadores de compilación específicos da linguaxe (CFLAGS, CXXFLAGS) por separado, agora son procesados ​​de forma inseparable e os indicadores que aparecen en CPPFLAGS utilízanse como outra fonte de marcas de compilación para as linguas que as admiten;
  • A saída de custom_target e custom_target[i] agora pódese usar como argumentos nas operacións link_with e link_whole;
  • Os xeradores agora teñen a capacidade de especificar dependencias adicionais usando a opción "depends" (por exemplo, generator(program_runner, output: [‘@[protexido por correo electrónico]'], depende: exe));
  • Engadiuse unha opción estática a find_library para permitir que a busca inclúa só bibliotecas ligadas de forma estática;
  • Para python.find_installation, engadiuse a capacidade de determinar a presenza dun módulo de Python determinado para unha versión específica de Python;
  • Engadiuse un novo módulo unstable-kconfig para analizar ficheiros kconfig;
  • Engadiuse un novo comando "subprojects foreach", que toma un comando con argumentos e execútao en todos os directorios de subproxectos;

Fonte: opennet.ru

Engadir un comentario