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
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
- 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