O principal objetivo do desenvolvimento do Meson é fornecer alta velocidade no processo de montagem combinada com conveniência e facilidade de uso. Em vez do utilitário make, a compilação padrão usa o kit de ferramentas
Há suporte para compilação cruzada e construção em Linux, macOS e Windows usando GCC, Clang, Visual Studio e outros compiladores. É possível construir projetos em diversas linguagens de programação, incluindo C, C++, Fortran, Java e Rust. Há suporte para o modo de construção incremental, no qual apenas os componentes diretamente relacionados às alterações feitas desde a última construção são reconstruídos. O Meson pode ser usado para gerar compilações repetíveis, nas quais a execução da compilação em ambientes diferentes resulta na geração de arquivos executáveis completamente idênticos.
O principal
- Adicionado suporte para construção transparente de projetos existentes que usam scripts de construção CMake. Meson agora pode construir diretamente subprojetos simples (como bibliotecas únicas) usando o módulo CMake, semelhante aos subprojetos padrão (incluindo subprojetos CMake podem ser colocados no diretório de subprojetos);
- Para todos os compiladores usados, testes preliminares são incluídos através da montagem e execução de arquivos de teste simples (verificação de integridade), não se limitando a testar sinalizadores especificados pelo usuário para compiladores cruzados (a partir de agora, os compiladores nativos da plataforma atual também serão verificados) .
- Adicionada a capacidade de definir opções de linha de comando usadas durante a compilação cruzada, com ligação especificando um prefixo de plataforma antes da opção. Anteriormente, as opções de linha de comando cobriam apenas compilações nativas e não podiam ser especificadas para compilação cruzada. As opções de linha de comando agora se aplicam independentemente de você estar compilando nativamente ou compilando cruzadamente, garantindo que compilações nativas e cruzadas produzam resultados idênticos;
- Adicionada a capacidade de especificar o sinalizador “--cross-file” mais de uma vez na linha de comando para listar vários arquivos cruzados;
- Adicionado suporte ao compilador ICL (Intel C/C++ Compiler) para plataforma Windows (ICL.EXE e ifort);
- Adicionado suporte inicial ao kit de ferramentas para CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
- O método “get_variable” foi adicionado ao objeto “dependency”, que permite obter o valor de uma variável sem levar em conta o tipo da dependência atual (por exemplo, dep.get_variable(pkg-config : 'var- nome', cmake : 'COP_VAR_NAME));
- Adicionado um novo argumento de opções de assembly de destino, "link_linguagem", para especificar explicitamente o idioma usado ao chamar o vinculador. Por exemplo, um programa Fortran principal poderia chamar código C/C++, que selecionaria automaticamente C/C++ quando o vinculador Fortran deveria ser usado;
- O tratamento dos sinalizadores do pré-processador CPPFLAGS foi alterado. Enquanto Meson armazenava anteriormente CPPFLAGS e sinalizadores de compilação específicos de idioma (CFLAGS, CXXFLAGS) separadamente, eles agora são processados inseparavelmente e os sinalizadores listados em CPPFLAGS são usados como outra fonte de sinalizadores de compilação para idiomas que os suportam;
- A saída de custom_target e custom_target[i] agora pode ser usada como argumentos nas operações link_with e link_whole;
- Os geradores agora têm a capacidade de especificar dependências adicionais usando a opção “depends” (por exemplo, gerador(program_runner, saída: ['@[email protegido]'], depende: exe));
- Adicionada uma opção estática para find_library para permitir que a pesquisa inclua apenas bibliotecas vinculadas estaticamente;
- Para python.find_installation, foi adicionada a capacidade de determinar a presença de um determinado módulo Python para uma versão específica do Python;
- Adicionado novo módulo instável-kconfig para analisar arquivos kconfig;
- Adicionado um novo comando “subprojects foreach”, que pega um comando com argumentos e o executa em todos os diretórios do subprojeto;
Fonte: opennet.ru