Versión 0.51 del sistema de compilación Meson

publicado lanzamiento del sistema de compilación Mesón 0.51, que se utiliza para crear proyectos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME y GTK+. El código de Meson está escrito en Python y suministrado licenciado bajo Apache 2.0.

El objetivo clave del desarrollo de Meson es proporcionar una alta velocidad del proceso de ensamblaje combinada con conveniencia y facilidad de uso. En lugar de la utilidad make, la compilación predeterminada utiliza el kit de herramientas Ninja, pero también es posible utilizar otros backends, como xcode y VisualStudio. El sistema tiene un controlador de dependencias multiplataforma incorporado que le permite usar Meson para crear paquetes para distribuciones. Las reglas de ensamblaje se especifican en un lenguaje simplificado específico del dominio, son muy legibles y comprensibles para el usuario (según lo previsto por los autores, el desarrollador debe dedicar un mínimo de tiempo a escribir las reglas).

Se admite la compilación cruzada y la creación en Linux, macOS y Windows utilizando GCC, Clang, Visual Studio y otros compiladores. Es posible crear proyectos en varios lenguajes de programación, incluidos C, C++, Fortran, Java y Rust. Se admite el modo de compilación incremental, en el que solo se reconstruyen los componentes directamente relacionados con los cambios realizados desde la última compilación. Meson se puede utilizar para generar compilaciones repetibles, en las que ejecutar la compilación en diferentes entornos da como resultado la generación de archivos ejecutables completamente idénticos.

El principal innovaciones Mesón 0.51:

  • Se agregó soporte para la construcción transparente de proyectos existentes que utilizan scripts de compilación de CMake. Meson ahora puede construir directamente subproyectos simples (como bibliotecas individuales) usando el módulo CMake, similar a los subproyectos estándar (incluidos los subproyectos de CMake que se pueden colocar en el directorio de subproyectos);
  • Para todos los compiladores usados, se incluyen pruebas preliminares mediante el ensamblaje y ejecución de archivos de prueba simples (verificación de idoneidad), que no se limitan a probar indicadores especificados por el usuario para compiladores cruzados (a partir de ahora, también se verifican los compiladores nativos de la plataforma actual). .
  • Se agregó la capacidad de definir opciones de línea de comando utilizadas durante la compilación cruzada, con vinculación especificando un prefijo de plataforma antes de la opción. Anteriormente, las opciones de la línea de comandos solo cubrían compilaciones nativas y no se podían especificar para compilación cruzada. Las opciones de línea de comando ahora se aplican independientemente de si está compilando de forma nativa o cruzada, lo que garantiza que las compilaciones nativas y cruzadas produzcan resultados idénticos;
  • Se agregó la capacidad de especificar el indicador “--cross-file” más de una vez en la línea de comando para enumerar múltiples archivos cruzados;
  • Se agregó soporte para el compilador ICL (Compilador Intel C/C++) para la plataforma Windows (ICL.EXE e ifort);
  • Se agregó compatibilidad con el kit de herramientas inicial para CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • Se agregó el método "get_variable" al objeto "dependencia", que le permite obtener el valor de una variable sin tener en cuenta el tipo de dependencia actual (por ejemplo, dep.get_variable(pkg-config : 'var- nombre', cmake: 'COP_VAR_NAME));
  • Se agregó un nuevo argumento de opciones de ensamblaje de destino, "link_language", para especificar explícitamente el idioma utilizado al llamar al vinculador. Por ejemplo, un programa principal de Fortran podría llamar a código C/C++, lo que seleccionaría automáticamente C/C++ cuando se debería usar el enlazador de Fortran;
  • Se ha cambiado el manejo de los indicadores del preprocesador CPPFLAGS. Mientras que Meson anteriormente almacenaba CPPFLAGS y indicadores de compilación específicos del idioma (CFLAGS, CXXFLAGS) por separado, ahora se procesan de forma inseparable y los indicadores enumerados en CPPFLAGS se utilizan como otra fuente de indicadores de compilación para los idiomas que los admiten;
  • La salida de custom_target y custom_target[i] ahora se puede utilizar como argumentos en las operaciones link_with y link_whole;
  • Los generadores ahora tienen la capacidad de especificar dependencias adicionales usando la opción "depende" (por ejemplo, generador(program_runner, salida: ['@[email protected]'], depende: exe));
  • Se agregó una opción estática a find_library para permitir que la búsqueda incluya solo bibliotecas vinculadas estáticamente;
  • Para python.find_installation, se agregó la capacidad de determinar la presencia de un módulo de Python determinado para una versión específica de Python;
  • Se agregó un nuevo módulo inestable-kconfig para analizar archivos kconfig;
  • Se agregó un nuevo comando “subproyectos para cada uno”, que toma un comando con argumentos y lo ejecuta en todos los directorios de subproyectos;

Fuente: opennet.ru

Añadir un comentario