Die neueste Version des plattformĂŒbergreifenden Open-Source-Build-Skripterstellers CMake 3.21 bietet eine Alternative zu Autotools und wird in Projekten wie KDE, LLVM/Clang, MySQL, MariaDB, ReactOS und Blender verwendet. Der CMake-Code ist in C++ geschrieben und unter der BSD-Lizenz veröffentlicht.
CMake zeichnet sich durch eine einfache Skriptsprache, Erweiterungsmöglichkeiten durch Module, eine minimale AbhĂ€ngigkeit (keine Bindung an M4, Perl oder Python), UnterstĂŒtzung fĂŒr Caching, Werkzeuge fĂŒr Cross-Compiling, die Generierung von Build-Dateien fĂŒr eine breite Palette von Build-Systemen und Compilern, sowie die Tools ctest und cpack zur Definition von Test- und Paketbuild-Skripts aus, sowie durch das cmake-gui-Tool fĂŒr die interaktive Konfiguration von Build-Parametern.
Hauptverbesserungen:
- VollstĂ€ndige UnterstĂŒtzung der Programmiersprache HIP (Heterogeneous-Computing Interface for Portability), einem Dialekt von C++, der darauf abzielt, die Umstellung von CUDA-Anwendungen auf portablen C++-Code zu vereinfachen.
- Ein Generator fĂŒr Build-Skripte fĂŒr Visual Studio 17 2022, basierend auf der Vorabversion von Visual Studio 2022 Preview 1.1, wurde hinzugefĂŒgt.
- In den Build-Skripterstellern Makefile und Ninja wurden die Eigenschaften C_LINKER_LAUNCHER und CXX_LINKER_LAUNCHER hinzugefĂŒgt, die es ermöglichen, Hilfsprogramme zu starten, die den Linker aufrufen, wie zum Beispiel statische Analysatoren. Der Generator wird die angegebenen Hilfsprogramme starten und ihnen den Namen des Linkers sowie dessen Argumente ĂŒbergeben.
- In den Eigenschaften âC_STANDARDâ und âOBJC_STANDARDâ sowie in den Werkzeugen zur Anpassung der Compiler-Parameter (Compile Features) wurde die UnterstĂŒtzung fĂŒr die Spezifikationen C17 und C23 hinzugefĂŒgt.
- Dem cmake-Tool wurde die Option ââtoolchain â hinzugefĂŒgt, um den Pfad zum Toolchain zu definieren.
- Die Hervorhebung der Nachrichtentypen, die im Terminal ausgegeben werden, wurde implementiert.
- Die UnterstĂŒtzung fĂŒr den Fujitsu-Compiler wurde hinzugefĂŒgt.
- In der Anweisung âforeach()â wurden die Variablen des Schleifenbereichs innerhalb der Schleife isoliert.
ZusĂ€tzlich kann die Veröffentlichung des Build-Systems Meson 0.59 erwĂ€hnt werden, das fĂŒr die Erstellung 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. Es wird Cross-Compiling unterstĂŒtzt und die Erstellung erfolgt in Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS und Windows unter Verwendung von GCC, Clang, Visual Studio und anderen Compilern. Die Erstellung von Projekten in verschiedenen Programmiersprachen, einschlieĂlich C, C++, Fortran, Java und Rust, ist möglich. Anstelle des make-Tools wird standardmĂ€Ăig das Ninja-Framework fĂŒr den Build verwendet, aber auch andere Backends wie xcode und VisualStudio können verwendet werden.
Das System enthĂ€lt einen plattformĂŒbergreifenden AbhĂ€ngigkeits-Manager, der es ermöglicht, Meson fĂŒr die Erstellung von Paketen fĂŒr Distributionen zu verwenden. Die Build-Regeln werden in einer vereinfachten domĂ€nenspezifischen Sprache definiert, die eine hohe Lesbarkeit aufweist und fĂŒr den Benutzer verstĂ€ndlich ist (laut den Autoren sollte der Entwickler möglichst wenig Zeit mit dem Schreiben von Regeln verbringen). Ein inkrementeller Build-Modus wird unterstĂŒtzt, bei dem nur die Komponenten neu erstellt werden, die direkt mit Ănderungen verbunden sind, die seit dem letzten Build vorgenommen wurden. Meson kann verwendet werden, um reproduzierbare Builds zu erstellen, bei denen das AusfĂŒhren des Builds in verschiedenen Umgebungen zur Generierung vollstĂ€ndig identischer ausfĂŒhrbarer Dateien fĂŒhrt.
Wesentliche Neuerungen in Meson 0.59:
- Die UnterstĂŒtzung fĂŒr die Sprache Cython wurde hinzugefĂŒgt (eine erweiterte Version von Python, die darauf abzielt, die Integration mit C-Code zu erleichtern).
- Die SchlĂŒsselwörter âunescaped_variablesâ und âunescaped_uninstalled_variablesâ wurden hinzugefĂŒgt, um Variablen in pkgconfig ohne Escaping von Leerzeichen mit dem Zeichen â\â zu definieren.
- UnterstĂŒtzung fĂŒr wrc (Wine Resource Compiler) wurde 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 Subprojekten verbunden sind, fĂŒhren jetzt standardmĂ€Ăig jedes Subprojekt parallel aus. Die Anzahl der parallel laufenden Prozesse wird durch den Parameter âânum-processesâ bestimmt.
Quelle: opennet.ru
