Die plattformübergreifende Open-Source-Bau-Skript-Generator CMake 3.21 wurde vorgestellt, der als Alternative zu Autotools fungiert und in Projekten wie KDE, LLVM/Clang, MySQL, MariaDB, ReactOS und Blender verwendet wird. Der CMake-Code ist in C++ geschrieben und wird unter der BSD-Lizenz veröffentlicht.
CMake zeichnet sich durch die Bereitstellung einer einfachen Skriptsprache, die Möglichkeit zur Erweiterung durch Module, einer minimalen Anzahl an Abhängigkeiten (keine Bindung an M4, Perl oder Python), Unterstützung für Caching, Tools zum Cross-Compiling, die Generierung von Build-Dateien für eine Vielzahl von Build-Systemen und Compilern sowie die Verfügbarkeit von Tools wie ctest und cpack zur Definition von Testskripten und Paket-Builds aus, einschließlich des Tools cmake-gui für die interaktive Anpassung von Build-Parametern.
Wesentliche Verbesserungen:
- Vollständige Unterstützung für die Programmiersprache HIP (Heterogeneous-Computing Interface for Portability) wurde hinzugefügt, einem Dialekt von C++, der darauf abzielt, die Konvertierung von CUDA-Anwendungen in tragbaren C++-Code zu vereinfachen.
- Ein Generator für Build-Skripte für Visual Studio 17 2022 wurde hinzugefügt, basierend auf der Vorabversion von Visual Studio 2022 Preview 1.1.
- In den Build-Skript-Generatoren Makefile und Ninja wurden die Eigenschaften C_LINKER_LAUNCHER und CXX_LINKER_LAUNCHER eingefügt, mit denen Sie das Starten von Hilfsprogrammen, die den Linker ausführen, wie z. B. statische Analysatoren, organisieren können. Der Generator wird die angegebenen Hilfsprogramme starten und ihnen den Namen des Linkers sowie dessen Argumente übergeben.
- Die Eigenschaften 'C_STANDARD' und 'OBJC_STANDARD' sowie die Werkzeuge zur Konfiguration der Compiler-Einstellungen (Compile Features) unterstützen jetzt die Spezifikationen C17 und C23.
- In das cmake-Tool wurde die Option „—toolchain “ hinzugefügt, um den Pfad zum Toolset zu definieren.
- Die Hervorhebung der Nachrichtentypen, die im Terminal ausgegeben werden, wurde sichergestellt.
- Unterstützung für den Fujitsu-Compiler wurde hinzugefügt.
- Im Befehl „foreach()“ wird die Isolation von Schleifenvariablen innerhalb der Schleife gewährleistet.
Außerdem kann die Veröffentlichung des Build-Systems Meson 0.59 erwähnt werden, das für den Bau von Projekten wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK verwendet wird. Der Meson-Code ist in Python geschrieben und wird unter der Lizenz Apache 2.0 bereitgestellt. Crossover-Kompilierung und Bau unter Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS und Windows mit GCC, Clang, Visual Studio und anderen Compilern werden unterstützt. Die Projekte können in verschiedenen Programmiersprachen wie C, C++, Fortran, Java und Rust gebaut werden. Als Standard wird das Ninja-Tool zur Erstellung anstelle von make verwendet, aber auch andere Backends wie Xcode und VisualStudio sind möglich.
Das System enthält einen plattformübergreifenden Abhängigkeitsmanager, der die Verwendung von Meson zur Erstellung von Paketen für verschiedene Distributionen ermöglicht. Die Build-Regeln werden in einer vereinfachten, domänenspezifischen Sprache definiert, die eine gute Lesbarkeit aufweist und für den Benutzer verständlich ist (den Autoren zufolge soll der Entwickler möglichst wenig Zeit für das Verfassen von Regeln aufwenden). Es wird ein inkrementeller Build-Modus unterstützt, bei dem nur die Komponenten neu erstellt werden, die direkt mit den Änderungen seit dem letzten Build verbunden sind. Meson kann verwendet werden, um reproduzierbare Builds zu erstellen, bei denen das Ausführen des Builds in unterschiedlichen Umgebungen zu identischen ausführbaren Dateien führt.
Die Hauptneuheiten von Meson 0.59:
- Unterstützung für die Sprache Cython (eine erweiterte Version von Python, die auf die Vereinfachung der Integration mit C-Code abzielt) hinzugefügt.
- Die Schlüsselwörter «unescaped_variables» und «unescaped_uninstalled_variables» wurden hinzugefügt, um Variablen in pkgconfig ohne Escape-Zeichen für Leerzeichen zu definieren.
- Unterstützung für wrc (Wine Resource Compiler) hinzugefügt.
- Die Möglichkeit zur Generierung von Projekten für Visual Studio 2012 und Visual Studio 2013 wurde implementiert.
- Alle Befehle, die mit der Verarbeitung von Teilprojekten verbunden sind, werden jetzt standardmäßig parallel für jedes Teilprojekt ausgeführt. Die Anzahl der parallel laufenden Prozesse wird durch den Parameter „—num-processes“ bestimmt.
Quelle: opennet.ru
