Versión 0.52 del sistema de compilación Meson

publicado lanzamiento del sistema de compilación Mesón 0.52, 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).

Soportado Compile y cree de forma cruzada en Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, 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.52:

  • Se agregó soporte experimental para Webassembly usando Emscripten como compilador;
  • El soporte para las plataformas Illumos y Solaris se ha mejorado significativamente y se ha puesto en funcionamiento;
  • Es posible ignorar los scripts de internacionalización basados ​​en gettext si el sistema no tiene instaladas las herramientas gettext (anteriormente, se mostraba un error al usar el módulo i18n en sistemas sin gettext);
  • Soporte mejorado para bibliotecas estáticas. Se han resuelto muchos problemas al utilizar bibliotecas estáticas desinstaladas;
  • Se agregó la capacidad de usar diccionarios para asignar variables de entorno. Al llamar a Environment(), el primer elemento ahora se puede especificar como un diccionario en el que las variables de entorno se definen en forma de clave/valor. Estas variables se transferirán a Environment_Object como si se hubieran configurado individualmente mediante el método set(). Ahora también se pueden pasar diccionarios a varias funciones que admiten un argumento "env";
  • Se agregó la función "runtarget alias_target(target_name, dep1, ...)" que crea un nuevo objetivo de compilación de primer nivel que se puede llamar con el backend de compilación seleccionado (por ejemplo, "ninja target_name"). Este objetivo de compilación no ejecuta ningún comando, pero garantiza que se creen todas las dependencias;
  • Se habilitó la configuración automática de la variable de entorno PKG_CONFIG_SYSROOT_DIR durante la compilación cruzada si hay una configuración sys_root en la sección “[properties]”;
  • Se agregó la opción "--gdb-path" para determinar la ruta al depurador de GDB al especificar la opción "--gdb testname" para ejecutar GDB con el script de prueba especificado;
  • Se agregó detección automática del objetivo de compilación clang-tidy para ejecutar este linter con todos los archivos fuente. El objetivo se crea si clang-tidy está disponible en el sistema y el archivo “.clang-tidy” (o “_clang-tidy”) está definido en la raíz del proyecto;
  • Dependencia agregada ('bloques') para usar en la extensión Clang Bloques;
  • Las vistas del enlazador y del compilador están separadas, lo que permite utilizar diferentes combinaciones de compiladores y enlazadores;
  • Se agregó el método all_dependencies() a los objetos SourceSet además del método all_sources();
  • En run_project_tests.py, se agregó la opción “--only” para ejecutar pruebas de forma selectiva (por ejemplo, “python run_project_tests.py —only fortran python3”);
  • La función find_program() ahora tiene la capacidad de buscar sólo las versiones requeridas de un programa (la versión se determina ejecutando el programa con la opción "-version");
  • Para controlar la exportación de símbolos, se ha agregado la opción vs_module_defs a la funciónshared_module(), similar ashared_library();
  • El módulo kconfig se ha ampliado para admitir configure_file() para especificar un archivo de entrada;
  • Se agregó la capacidad de especificar múltiples archivos de entrada para los controladores "comando:" a configure_file();
  • El comando "dist" para crear un archivo se ha movido a la categoría de comandos de primer nivel (anteriormente el comando estaba vinculado a ninja). Se agregó la opción "--formatos" para definir los tipos de archivos que se crearán (por ejemplo,
    "mesón dist -formats=xztar,zip").

Fuente: opennet.ru

Añadir un comentario