CMake für Gestern

Wo CMake ganz brav das GATE Projekt verwaltet, stellt sich für mich auch die Frage:

Wie sieht es mit älteren Plattformen aus?

Denn unter Windows 7 und 10 mit Visual Studio 2017 läuft alles reibungslos. Aber schon für Windows XP und Studio 2005 hat das aktuelle CMake Release keinen Support mehr integriert.


Aufgabe: CMake für alte Plattformen

Zu meinem Leidwesen entfernen Softwarehersteller immer viel zu schnell den Support für ältere Systeme, das trifft auch für CMake zu.

Konnte man damit früher Projekte für Visual Studio 6 bis 2015 erzeugen, können wir das heute nur noch mit Studio 2015 - 2019 tun.

Jetzt ist aber die Kompatibilität zu alten Systemen ein Kernziel des GATE Projektes … also was tun?

Windows XP + Visual Studio 6

Visual Studio 6 läuft offiziell nur bis Windows XP. Ab Vista und Windows 7 werden die IDEs offizell nicht mehr unterstützt (und bei VB 6 gab es auch zahlreiche Probleme mit neueren Windows Versionen).

Daher macht es Sinn VS6 immer mit Windows XP z.B. in einer VM zu betreiben. Viele Produkte unterstützen dieses alte Windows leider nicht mehr und somit muss man auf die jüngste der älteren Versionen zurückgreifen, die XP noch unterstützen.

  1. Windows Installer 4.5 Update
    Ohne dieses Update lassen sich nachfolgende Installationsprogramme nicht ausführen.
  2. GIT 2.10
    Tja, ohne GIT wird das “Besorgen” von Quellcode mühsam, Git 2.10 ist die letzte Version, die Windows XP noch unterstützt.
  3. TortoiseGIT 1.8.16
    Damit wir GIT im Explorer grafisch einsetzen können, darf TortoiseGIT nicht fehlen. Version 1.8.16 ist hier die “neueste” mit XP Support.
  4. CMake 3.5.2
    Für MSVC 6 müssen wir leider bis zur Version 3.5.2 zurücksteigen. Neuere Versionen können keine Projektdateien für VC 6 mehr erstellen.
  5. Service Pack 6 für Visual Studio 6
    Seit Anfang 2000 habe ich keine Installation mehr ohne dieses Update gesehen. Es sollte auf keinem VS6-System fehlen.

Mit dieser Toolchain ist es möglich 32-bit Kompilate zu erstellen, die auch noch unter Windows 95 und NT 4.0 laufen.
(Dies ist zwar kein Hauptziel des GATE Projektes … aber wenn Zeit bleibt, wieso nicht).

Einschränkungen

Die wichtigste Einschränkung ist der C89 Compiler. Viele moderne C-Bibliotheken setzen C99 voraus. Im GATE Projekt trifft das leider die libReSSL und somit müsste diese in CMake ausgeschlossen werden.
Eine Alternative wäre eine (möglicherweise ältere) Version von OpenSSL, die noch unter Studio 6 erstellbar wäre.

Viele C++ Features sind ebenfalls problematisch. Das GATE Projekt versucht diese zwar nicht einzusetzen, dennoch ist es auch als Anwendungsentwickler schwierig hier nicht in alle möglichen Fallen zu treten.

Dass new keine Exception wirft und im Fehlerfall einfach NULL zurückgibt, ist so eine Spezialität, die schnell zu “seltsamen” Abstürzen führen kann.

Fazit

Ja, als Code-Archäologe hat man es nicht immer leicht.
Doch andererseits sind es genau die Spezialitäten dieser alten Systeme und Build-Umgebungen, die einem die Entwicklungsgeschichte der heutigen IT offenlegen.

Zumindest freue ich mich, dass es mir mit diesem Setup möglich ist, meine heutigen Sourcen auch noch auf antiken Systemen bauen lassen zu können.


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
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!