CMake 3.20 erweitert die Spezifizierungsoptionen bei C++-Compilern

Das plattformunabhängige Build-System umfasst Neuerungen bei den CUDA-Architekturen und baut die übertragbaren Voreinstellungen für Builds und Tests aus.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen

(Bild: Blackboard/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

CMake ist ein quelloffenes Build-Werkzeug, das zahlreiche Entwicklungsumgebungen und Compiler auf unterschiedlichen Plattformen unterstützt. Unter anderem enthält es auch Tools zum Testen und Erstellen von Installationspaketen. Der Hersteller Kitware hat soeben Version 3.20 freigegeben, das Release umfasst fünf neue Features und zahlreiche kleinere Änderungen.

Nutzer sollen ab jetzt Voreinstellungen beim Konfigurieren eines Projekts einfacher mit anderen teilen können. Das spielt laut Dokumentation insbesondere bei CI-Builds eine Rolle. Aber auch jenseits der Continuous Integration gibt es Szenarien, in denen derselbe Build mehrfach zum Einsatz kommt. Mit den beiden Dateien CMakePresets.json und CMakeUserPresets.json können Nutzer die gewünschten Konfigurationseinstellungen definieren und sie mit anderen teilen. Experimentell war das schon länger möglich, die neue Version von CMake unterstützt das Konfigurieren und Teilen von Voreinstellungen zu Build und Tests nun der Ankündigung im Kitware-Blog zufolge erstmals offiziell.

Die Makefile-Generatoren können nun in einigen Toolchains den Compiler nutzen, um während des Kompilierens implizite Abhängigkeiten zu extrahieren. Im Bereich der Programmiersprachen setzt CMake 3.20 auf eine erweiterte Compiler-Spezifikation für C++: So stehen Nutzerinnen und Nutzern gleich vier Alternativen offen, um den C++-Standard festzulegen, dessen Features für den jeweiligen Build erforderlich sind. Das geht offenbar einerseits über die Target Properties von CXX_STANDARD, CUDA_STANDARD und OBJCXX_STANDARD. Andererseits können Nutzer auch über die CMake Compile Features in der Funktionalität cxx_std_20 den C++-Standard bestimmen (hier beispielhaft C++20).

CMake erlaubt dabei die Eingabe der C++-Standards 98, 11, 14, 17 und 20 sowie bereits des kommenden Standards C++23. Falls der verwendete Compiler den gewählten Standard nicht unterstützt, greift er automatisch auf den nächstniedrigen unterstützten Compiler zurück und teilt dies im gesetzten Compiler Flag mit.

C++ Deep Dive: Workshops von Heise

Am 29. Juni und am 5. Juli richtet Heise je einen ganztägigen C++-Workshop aus: Rainer Grimm erklärt beim Praxistag die Best Practices für Modernes C++, und Nico Josuttis macht in seinem Crashkurs Interessierte mit dem neuen Standard C++20 vertraut. Weitere Informationen bietet die Website.

Weitere Neuerungen betreffen das von Nvidia entwickelte CUDA (Compute Unified Device Architecture): So hat CMake 3.20 eine neue Variable für CUDA-Architekturen an Bord, mit der sich CMAKE_CUDA_ARCHITECTURES der Ankündigung zufolge initialisieren lassen. Relevant ist das in Fällen, wenn die Standardeinstellungen des Compilers nicht zum Grafikprozessor des verwendeten Geräts passen. Mittels CUDA lassen sich Teile des Programms dann durch den Grafikprozessor (GPU) abarbeiten, was vor allem bei parallelisierbaren Programmabläufen von Interesse sein kann. Insbesondere bei wissenschaftlichen und technischen Berechnungen kann CUDA durch die zusätzliche Rechenkapazität den Vorgang beschleunigen und den Prozessor (CPU) entlasten.

Einige Änderungen betreffen unter anderem die Compiler, so unterstützt das aktuelle Release beispielsweise Compiler vom Typ Intel oneAPI NextGen LLVM mit der ID IntelLLVM. Darunter fallen offenbar auch die C/C++-Compiler icxund icpx für Linux sowie der icx-Compiler für Windows. Unter Linux erhält der ifx-Compiler für Fortran teilweise Unterstützung (für Windows steht dessen Support noch aus), und der Compiler IAR STM8 ist jetzt ebenfalls unterstützt.

Eine Reihe kleinerer Änderungen betreffen Befehle, API, Variablen, Properties und Module sowie CPack und CTest. Der Modus cmake-server (7) ist entfallen, ihn gilt es durch cmake-file-api (7) zu ersetzen.

Die Release Notes listen die vollständigen Neuerungen und Änderungen auf. Einsteiger können sich ergänzend in der CMake-Dokumentation orientieren. CMake 3.20 steht für Linux, Windows und macOS zum freien Download auf der CMake-Website bereit, vorpaketiert mit CPack (das im Release auch enthalten ist).

(sih)