CMake 4.0 (ist zuuu neu)

Mit dem Erscheinen von CMake Version 4 geht das defacto Standard C/C++ Build-System in eine neue Runde.

Es fühlt sich aber eher wie ein CMake 3.40 an, das auf die letzte 3er-Version 3.31 folgt.


Ich kenne CMake nun seit fast 10 Jahren und nutze es privat wie beruflich in den letzten 6 Jahren täglich.
Eigentlich stellt sich für mich immer wieder die Frage, warum ich es nicht schon seit 16 Jahren durchgehend nutze … naja … eine andere Geschichte.

Version 4.0 bringt für mich keine wichtigen Neuerungen mit, leider beschert uns allen der Umstieg eher Probleme, weil Dinge fehlen.

Ab v4.0 wird der Minimum-Standard auf v3.10 gehoben. Das ist formal kein großes Thema, weil alles weiter funktioniert, was bis v3.9 da war, wenn man von ein paar Sonderfällen und Spezial-Policies und -Defaults absieht.

Doch wer in seinem Script ein

1cmake_minimum_required(VERSION 3.9)

oder generell < 3.10 drinnen hat, bekommt jetzt einen Fehler mit Abbruch, wo in den letzten Versionen nur eine Deprecation-Warning stand.

Viele kleinere Projekte wie z.B.: zlib nutzen nur Basis-Funktionen in CMake, die alle schon in v3.0 oder 3.1 enthalten waren. Folglich ist deren Minimum-Requirement auch für diese alten Versionen gesetzt.

Mit CMake 4.0 lässt sich dieser Code dann nicht mehr verwalten. Das trifft mich vor allem bei Conan Projekten, denn dort sind alle fertigen Pakete und Rezepte fixiert und werden nicht fortlaufend geändert.
Um sie kompilieren zu können ist also in Zukunft ein älteres CMake zwingend erforderlich.

Version 3.26 ist das jüngste “alte CMake-3”, welches von v3.0 bis 3.26 alle Varianten ohne Deprecation-Warning behandeln kann.

GATE Anpassungen

Ich werde mir jetzt wohl etwas einfallen lassen müssen, damit GATE unter CMake 4 genau so bauen kann wie unter CMake 3. Mein altes Test-Ubuntu 16.04 kommt noch mit CMake 3.7 um die Ecke und ich nutze kaum Funktionen über 3.5.

Vermutlich lässt sich cmake_minimum_required variabel gestalten, je nachdem, was wirklich installiert wird. Dummerweise gibt es ohne diese required Zeile auch Warnungen und Fehler, dass das Minimum nicht festgelegt ist.

Fazit

CMake ist grundsätzlich genial … obwohl es uns eine scheußliche Scriptsprache aufzwingt. Da würde mir xmake mit LUA schon besser gefallen … doch wenn es um den Support älterer wie neuerer Compiler und alle Arten von exotischen Plattformen geht, kommt man an diesem Universalwerkzeug einfach nicht vorbei.

Vorläufig musste ich CMake 4.0 wieder deinstallieren und durch 3.31 ersetzen. Gespannt bin ich, wie Conan Projekte auf die Änderung reagieren werden. Conan selbst setzt ja 3.15 voraus, aber wie gesagt: Die CMakeLists.txt Dateien vieler Projekte nutzen oft Werte kleiner 3.10.

Ich rieche Patches, die auf uns zukommen.

🔗 Web: CMake
📧 📋 🐘 | 🔗 🔔
 

Meine Dokus über:
 
Weitere externe Links zu:
Alle extern verlinkten Webseiten stehen nicht in Zusammenhang mit opengate.at.
Für deren Inhalt wird keine Haftung übernommen.



Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen