De release van de cross-platform open source build script generator CMake 3.21 is gepresenteerd, die als alternatief voor Autotools fungeert en wordt gebruikt in projecten zoals KDE, LLVM/Clang, MySQL, MariaDB, ReactOS en Blender. De CMake-code is geschreven in C++ en wordt verspreid onder de BSD-licentie.
CMake valt op door het bieden van een eenvoudige script-taal, extensiemogelijkheden via modules, een minimaal aantal afhankelijkheden (geen binding aan M4, Perl of Python), ondersteuning voor cachen, tools voor cross-compilatie, ondersteuning voor het genereren van build-bestanden voor een breed scala aan build-systemen en compilers, en de aanwezigheid van de tools ctest en cpack voor het definiëren van test- en pakket build-scripts, evenals de cmake-gui-tool voor interactieve configuratie van build-instellingen.
Hoofdverbeteringen:
- Volledige ondersteuning is toegevoegd voor de programmeertaal HIP (Heterogeneous-Computing Interface for Portability), een dialect van C++, gericht op het vergemakkelijken van de conversie van CUDA-applicaties naar draagbare C++-code.
- Een generator voor build scripts voor Visual Studio 17 2022 is toegevoegd, gebaseerd op de prerelease van Visual Studio 2022 Preview 1.1.
- In de build script generators Makefile en Ninja zijn de eigenschappen C_LINKER_LAUNCHER en CXX_LINKER_LAUNCHER toegevoegd, waarmee het mogelijk is om hulpprogramma's te starten die de linker aanroepen, zoals statische analyzers. De generator zal de opgegeven hulpprogramma's starten en de naam van de linker en zijn argumenten doorgeven.
- Ondersteuning voor de specificaties C17 en C23 is toegevoegd in de eigenschappen ‘C_STANDARD’ en ‘OBJC_STANDARD’, evenals in de hulpmiddelen voor het configureren van compilerinstellingen (Compile Features).
- De optie ‘—toolchain ’ is toegevoegd aan de cmake-tool om het pad naar het gereedschapspakket te definiëren.
- Typehighlighting voor berichten die naar de terminal worden verzonden, is geïmplementeerd.
- Ondersteuning voor de Fujitsu-compiler is toegevoegd.
- In de ‘foreach()’-functie is de isolatie van loopvariabelen binnen de loop gegarandeerd.
Daarnaast kan de release van het buildsysteem Meson 0.59 worden genoemd, dat wordt gebruikt voor de bouw van projecten zoals X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK. De Meson-code is geschreven in Python en wordt geleverd onder de Apache 2.0-licentie. Cross-compilatie en build in Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS en Windows met behulp van GCC, Clang, Visual Studio en andere compilers wordt ondersteund. Het is mogelijk om projecten in verschillende programmeertalen te bouwen, waaronder C, C++, Fortran, Java en Rust. In plaats van de make-tool wordt standaard de Ninja-tool gebruikt bij de build, maar het is ook mogelijk om andere backends zoals xcode en VisualStudio te gebruiken.
Het systeem bevat een multiplatform afhankelijkheidsbeheerder waarmee Meson kan worden gebruikt voor het bouwen van pakketten voor distributies. De bouwregels worden opgesteld in een vereenvoudigde domeingerichte taal, die goed leesbaar is en begrijpelijk voor de gebruiker (volgens de auteurs moet de ontwikkelaar minimaal tijd besteden aan het schrijven van regels). Er is een incrementele bouwmodus die alleen de componenten herschrijft die direct verband houden met de wijzigingen die sinds de laatste build zijn aangebracht. Meson kan worden gebruikt om reproducerbare builds te creëren, waarbij de uitvoering van de build in verschillende omgevingen leidt tot volledig identieke uitvoerbare bestanden.
Belangrijkste nieuwigheden in Meson 0.59:
- Ondersteuning voor de Cython-taal is toegevoegd (een uitgebreide versie van Python, gericht op het vereenvoudigen van de integratie met C-code).
- De sleutelwoorden 'unescaped_variables' en 'unescaped_uninstalled_variables' zijn toegevoegd om variabelen in pkgconfig zonder escapes voor spaties met het karakter '\' te definiëren.
- Ondersteuning voor wrc (Wine Resource Compiler) is toegevoegd.
- De mogelijkheid om projecten te genereren voor Visual Studio 2012 en Visual Studio 2013 is gerealiseerd.
- Alle commando's die verband houden met het verwerken van subprojecten starten nu standaard elk subproject parallel. Het aantal parallel werkende processen wordt bepaald door de parameter '--num-processes'.
Bron: opennet.ru
