Apresentado o lançamento do gerador de scripts de construção CMake 3.21, uma alternativa multiplataforma e de código aberto ao Autotools, utilizada em projetos como KDE, LLVM/Clang, MySQL, MariaDB, ReactOS e Blender. O código do CMake é escrito em C++ e distribuído sob a licença BSD.
O CMake é notável por oferecer uma linguagem de script simples, extensibilidade de funcionalidade através de módulos, um número mínimo de dependências (sem ligação ao M4, Perl ou Python), suporte a cache, ferramentas para compilação cruzada, geração de arquivos de construção para uma ampla gama de sistemas de compilação e compiladores, incluindo utilitários ctest e cpack para definir scripts de teste e pacotes de construção, além do utilitário cmake-gui para configuração interativa de parâmetros de construção.
Principais melhorias:
- Adicionada a suporte completo para a linguagem de programação HIP (Interface de Computação Heterogênea para Portabilidade), um dialeto da linguagem C++, destinado a simplificar a conversão de aplicativos CUDA em código C++ portátil.
- Adicionado o gerador de scripts de construção para Visual Studio 17 2022, baseado no lançamento prévio do Visual Studio 2022 Preview 1.1.
- Nos geradores de scripts de construção Makefile e Ninja, adicionadas as propriedades C_LINKER_LAUNCHER e CXX_LINKER_LAUNCHER, que permitem a execução de utilitários auxiliares que iniciam o vinculador, como analisadores estáticos. O gerador executará os utilitários especificados, passando o nome do vinculador e seus argumentos.
- Nas propriedades 'C_STANDARD' e 'OBJC_STANDARD', bem como nas ferramentas para configurar parâmetros do compilador (Compile Features), adicionada a suporte para as especificações C17 e C23.
- Na utilidade cmake, adicionada a opção '--toolchain ' para definir o caminho para a ferramenta.
- Garantida a realce dos tipos de mensagens exibidas no terminal.
- Adicionada a suporte para o compilador Fujitsu.
- Na declaração 'foreach()', garantida a isolação das variáveis de loop dentro do loop.
Além disso, vale destacar o lançamento do sistema de montagem Meson 0.59, que é utilizado para compilar projetos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. O código do Meson é escrito em Python e está sob a licença Apache 2.0. Suporte à compilação cruzada e compilação em Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows com GCC, Clang, Visual Studio e outros compiladores. É possível compilar projetos em várias linguagens de programação, incluindo C, C++, Fortran, Java e Rust. Em vez da ferramenta make, o kit de ferramentas Ninja é usado por padrão na compilação, mas é possível também usar outros backends, como xcode e VisualStudio.
O sistema possui um manipulador de dependências multiplataforma integrado, permitindo usar o Meson para compilar pacotes para distribuições. As regras de compilação são definidas em uma linguagem de domínio específico simplificada, que se destaca pela boa legibilidade e é compreensível para o usuário (os autores pretendem que o desenvolvedor dedique o mínimo de tempo possível para escrever regras). O modo incremental de compilação é suportado, no qual apenas os componentes diretamente relacionados às alterações feitas desde a última compilação são recompilados. O Meson pode ser usado para gerar compilações repetíveis, onde a execução da compilação em diferentes ambientes resulta na geração de arquivos executáveis totalmente idênticos.
Principais novidades do Meson 0.59:
- Adicionada a suporte para a linguagem Cython (uma variante avançada do Python, destinada a simplificar a integração com código em C).
- Adicionados os palavras-chave "unescaped_variables" e "unescaped_uninstalled_variables" para a definição de variáveis no pkgconfig sem escapar espaços com o caractere "\".
- Adicionada a suporte para wrc (Wine Resource Compiler).
- Implementada a possibilidade de geração de projetos para Visual Studio 2012 e Visual Studio 2013.
- Todas as comandos relacionadas ao processamento de subprojetos agora executam cada subprojeto em paralelo por padrão. O número de processos em execução simultaneamente é determinado pelo parâmetro "—num-processes".
Fonte: opennet.ru
