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.
- Silke Hahn
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.
Neue Wege zur C++-Compiler-Spezifikation
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.
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.
Neue Variable fĂĽr CUDA-Architekturen
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.
Neuerdings unterstĂĽtzte Compiler
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 icx
und 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.
WeiterfĂĽhrende Hinweise
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)