Lanzamento dos sistemas de compilación CMake 3.21 e Meson 0.59

Preséntase o lanzamento do xerador de scripts de compilación aberta multiplataforma CMake 3.21, que actúa como alternativa a Autotools e úsase en proxectos como KDE, LLVM/Clang, MySQL, MariaDB, ReactOS e Blender. O código CMake está escrito en C++ e distribúese baixo a licenza BSD.

CMake destaca por proporcionar unha linguaxe de scripts sinxela, un medio para estender a funcionalidade a través de módulos, un número mínimo de dependencias (sen vinculación a M4, Perl ou Python), soporte de caché, presenza de ferramentas para a compilación cruzada, soporte para xerar compilación. ficheiros para unha ampla gama de sistemas de compilación e compiladores, a presenza de utilidades ctest e cpack para definir scripts de proba e construír paquetes, a utilidade cmake-gui para establecer de forma interactiva os parámetros de compilación.

Melloras principais:

  • Engadido soporte completo para a linguaxe de programación HIP (Heterogeneous-Computing Interface for Portability), un dialecto da linguaxe C++ destinado a facilitar a conversión de aplicacións CUDA a código C++ portátil.
  • Engadido xerador de scripts de compilación para Visual Studio 17 2022, baseado en Visual Studio 2022 Preview 1.1.
  • Os xeradores de scripts de compilación Makefile e Ninja engadiron as propiedades C_LINKER_LAUNCHER e CXX_LINKER_LAUNCHER, que se poden usar para lanzar utilidades auxiliares que inician o enlazador, como analizadores estáticos. O xerador executará as utilidades especificadas, pasándolles o nome do enlazador e os seus argumentos.
  • Nas propiedades “C_STANDARD” e “OBJC_STANDARD”, así como nas ferramentas para a configuración de parámetros do compilador (Compile Features), engadiuse soporte para as especificacións C17 e C23.
  • Engadiuse a opción "--toolchain > á utilidade cmake para determinar o camiño cara á cadea de ferramentas.
  • Resáltanse os tipos de mensaxes que se amosan no terminal.
  • Engadido soporte para o compilador Fujitsu.
  • O comando "foreach()" garante que as variables do bucle estean illadas dentro dun bucle.

Ademais, podemos observar o lanzamento do sistema de compilación Meson 0.59, que se usa para construír proxectos como X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. O código de Meson está escrito en Python e está licenciado baixo a licenza Apache 2.0. Admite compilación cruzada e creació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. En lugar da utilidade make, o conxunto de ferramentas Ninja utilízase de forma predeterminada ao construír, pero tamén se poden 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). 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.

Principais innovacións de Meson 0.59:

  • Engadido soporte para a linguaxe Cython (unha versión avanzada de Python destinada a simplificar a integración co código C).
  • Engadíronse as palabras clave "unescaped_variables" e "unescaped_uninstalled_variables" para definir variables en pkgconfig sen escapar espazos co carácter "\".
  • Engadido soporte para wrc (Wine Resource Compiler).
  • Implementouse a capacidade de xerar proxectos para Visual Studio 2012 e Visual Studio 2013.
  • Todos os comandos relacionados co subproxecto agora executan cada subproxecto en paralelo por defecto. O número de procesos paralelos está determinado polo parámetro "--num-processes".

Fonte: opennet.ru

Engadir un comentario