Versión 0.52 do sistema de compilación Meson

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

Soportado Compilación cruzada e compilación en Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows usando 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.52:

  • Engadido soporte experimental para Webassembly usando Emscripten como compilador;
  • O soporte para as plataformas Illumos e Solaris mellorouse significativamente e púxose a funcionar;
  • É posible ignorar os scripts de internacionalización baseados en gettext se o sistema non ten instaladas as ferramentas gettext (anteriormente, mostrábase un erro ao usar o módulo i18n en sistemas sen gettext);
  • Compatibilidade mellorada para bibliotecas estáticas. Resolvéronse moitos problemas ao usar bibliotecas estáticas desinstaladas;
  • Engadida a posibilidade de usar dicionarios para asignar variables de ambiente. Cando se chama a ambiente(), agora pódese especificar o primeiro elemento como un dicionario no que as variables de ambiente se definen en forma de clave/valor. Estas variables transferiranse a environment_object coma se estivesen definidas individualmente mediante o método set(). Agora tamén se poden pasar dicionarios a varias funcións que admiten un argumento "env";
  • Engadiuse a función "runtarget alias_target(target_name, dep1, ...)" que crea un novo obxectivo de compilación de primeiro nivel que se pode chamar co backend de compilación seleccionado (por exemplo, "ninja target_name"). Este destino de compilación non executa ningún comando, pero garante que se constrúen todas as dependencias;
  • Activouse a configuración automática da variable de ambiente PKG_CONFIG_SYSROOT_DIR durante a compilación cruzada se hai unha configuración sys_root na sección "[propiedades]";
  • Engadiuse a opción "--gdb-path" para determinar o camiño ao depurador GDB ao especificar a opción "--gdb testname" para executar GDB co script de proba especificado;
  • Engadiuse a detección automática do destino de compilación ordenado para executar este linter con todos os ficheiros fonte. O destino créase se clang-tidy está dispoñible no sistema e o ficheiro ".clang-tidy" (ou "_clang-tidy") está definido na raíz do proxecto;
  • Engadiuse dependencia ('bloques') para usar na extensión Clang Bloques;
  • As vistas do enlazador e do compilador están separadas, o que permite utilizar diferentes combinacións de compiladores e enlazadores;
  • Engadiuse o método all_dependencies() aos obxectos SourceSet ademais do método all_sources();
  • En run_project_tests.py, engadiuse a opción "--only" para executar probas selectivamente (por exemplo, "python run_project_tests.py —só fortran python3");
  • A función find_program() agora ten a capacidade de buscar só as versións requiridas dun programa (a versión determínase executando o programa coa opción "-version");
  • Para controlar a exportación de símbolos, engadiuse a opción vs_module_defs á función shared_module(), similar a shared_library();
  • O módulo kconfig foi expandido para admitir configure_file() para especificar un ficheiro de entrada;
  • Engadida a posibilidade de especificar varios ficheiros de entrada para os controladores "command:" a configure_file();
  • O comando "dist" para crear un arquivo moveuse á categoría de comandos de primeiro nivel (anteriormente o comando estaba vinculado a ninja). Engadida a opción "--formats" para definir os tipos de arquivos a crear (por exemplo,
    "meson dist -formats=xztar,zip").

Fonte: opennet.ru

Engadir un comentario