Warum wir CMake verwenden und warum Sie das auch tun sollten:
Wieso CMake? Was ist es und warum wir empfehlen und nutzen es.
Wenn man ein neues Produkt entwickelt, kann man sich leicht hinreißen lassen. Die Begeisterung für die Aufgabe, die Kreativität der beteiligten Entwickler & Entwicklerinnen, die verschiedenen Entwicklungskits der Chip- und Modulhersteller. Manchmal reicht es aus, von einer Idee zu hören, um mit der Entwicklung von Funktionen und Software im Allgemeinen direkt loslegen zu wollen.
Diese Leidenschaft ist zwar lobenswert und kann manchmal sogar einen schnelleren Weg zur Marktreife bieten, ist aber nicht unbedingt die effizienteste Vorgehensweise, vor allem nicht, wenn es um die Umsetzung in großem Maßstab geht. Für Softwareprojekte ist es daher am besten, ein so genanntes „Build-System“ zu verwenden.
Ein Build-System ist ein Satz von Werkzeugen und Prozessen, mit denen die Kompilierung und Assemblierung von Quellcodes in ausführbare Programme, Bibliotheken oder andere einsatzfähige Artefakte automatisiert wird. Im Allgemeinen besteht es aus einem Compiler (übersetzt geschriebenen Quellcode in Maschinencode) und Build-Tools & Konfiguration (ein automatisierter Prozess, der die Quelldateien kompiliert und eine Bibliothek erzeugt).
Hier bei ithinx bevorzugen wir derzeit CMake (Cross-Platform Make) als unser Build-Tool der Wahl.
Was genau ist CMake?
CMake ist ein Open-Source-Build-System und Konfigurationswerkzeug, das zur Verwaltung des Build-Prozesses von Software-Projekten verwendet wird. Es ermöglicht Entwicklern, den Build-Prozess plattformunabhängig und effizient zu definieren, indem sie einen Satz von Konfigurationsdateien (CMakeLists.txt) erstellen, die beschreiben, wie das Projekt gebaut werden soll.
Warum sind wir so scharf darauf?
Plattformunabhängigkeit: CMake erlaubt es Entwicklern, Build-Konfigurationen zu definieren, die nahtlos über verschiedene Betriebssysteme und Build-Umgebungen hinweg funktionieren.
Generator-basiertes Build-System: CMake generiert plattformspezifische Build-Dateien (z.B. Makefiles, Visual Studio Projektdateien) auf der Basis der Projektkonfiguration und ist damit an verschiedene Build-Tools anpassbar.
Modularität und Abhängigkeitsmanagement: CMake unterstützt modulare Projektstrukturen und hilft bei der Verwaltung von Abhängigkeiten zwischen verschiedenen Komponenten oder Bibliotheken.
Anpassbare Konfiguration: Entwickler können die Build-Einstellungen, Kompilieroptionen und andere Parameter über CMake anpassen und so den Build-Prozess auf spezifische Anforderungen zuschneiden.
Out-of-Source-Builds: CMake fördert die Praxis, das Projekt außerhalb des Quellcodeverzeichnisses zu bauen, um saubere und organisierte Builds zu ermöglichen, ohne den Quellcodebaum zu überladen.
Integration mit Test-Frameworks: CMake erleichtert die Integration mit Test-Frameworks und ermöglicht automatisierte Tests als Teil des Build-Prozesses. Wie Sie an anderer Stelle auf unserer Website lesen werden, legen wir großen Wert auf das Testen und die Automatisierung von Tests.
Insgesamt vereinfacht und standardisiert CMake den Prozess der Erstellung von Softwareprojekten und erleichtert Entwicklern die Verwaltung und Pflege komplexer Build-Konfigurationen auf verschiedenen Plattformen.
ithinx CMake Template
Bei ithinx gehen wir noch einen Schritt weiter und verwenden unser eigenes ithinx CMake Template. Unser Template vereinfacht und standardisiert die Integration von CMake in Projekte, vereinfacht das Testing und schafft eine nahtlose Integration in unser Continuous-Integration System (meistens Jenkins), generiert Code-Metriken (einer Methodik um den Qualität von Code zu messen), Dokumentation und erzeugt generische Deployment-Pakete.
Bei ithinx unterstützt das Ganze das V-Modell, das wir für die Entwicklung verwenden und ermöglicht neuen Mitarbeitern (entweder im Projekt oder in der Organisation) den einfachen Einstieg in das Projekt. Vor allem reduziert es den Einrichtungsaufwand, d.h. weniger Zeitaufwand für uns und damit auch weniger Kosten für unsere Kunden.