CMake und OS X


CMake ist ein sehr nützliches Werkzeug. Mit diesem Tool wird die Entwicklung von Programmen sehr erleichtert.
Dieses Werkzeug wird von Kitware als Opensource vertrieben und steht über diese Adresse  http://www.cmake.org/cmake/resources/software.html zum Download bereit. Ursprünglich kommt das Werkzeug aus der Linux-Ecke. Allerdings steht es auch für Windows und für den OS X zur Verfügung. Wobei Mac OS X der interessante Teil für mich ist.

Installation

Nach dem Download steht auf dem Mac ein DMG in dem Download Ordner bereit. Nach dem dieses Disk-Image durch einen Doppelklick geöffnet wurde kann man es einfach installieren. Bei der Installation wird angeboten einen symbolischen Link für die Kommando-Zeile zur Verfügung zu stellen. Das macht absolut Sinn. Außer man ist geneigt für jeden Kommandozeilen Aufruf richtig viel zu tippen. Die Eingabe würde ohne den symbolischen Link auch den kompletten Pfad, einschließlich den Pfad in der App erfordern.

Nutzung

Am leichtesten lässt sich CMake mit der Hilfe des mitgelieferten GUI-Tools nutzen. Damit ist schnell und einfach die notwendige Datei CListMake.txt zu erzeugen. Diese Datei ist notwendig um das Makefile zu generieren. So lassen sich mit ein paar einfachen leicht zu verstehenden Befehlen komplizierte Projekte erstellen. Das geht sogar so weit dass ein Zusatzmodul dabei ist mit dem sich die Paketskript erzeugen lassen. Also kann man aus der CListMake.txt Datei erzeugte Programme gleich in die folgenden Pakete zusammenpacken:
  • TGZ
  • STGZ
  • TBZ2
  • TZ
  • ZIP
  • NSIS
  • DragNDrop (OSX)
  • PackageMaker (OSX)
  • OSXX1 (OSX)
  • Bundle (OSX)
  • CygwinBinary und CygwinSource
  • DEB (Linux)
  • RPM (Linux) 
Ich gebe zu das ist sehr beeindruckend. Allerdings werde ich trotzdem nicht damit arbeiten. Warum ist im nächsten Abschnitt zu lesen.

Fazit

Nach dem die „großen“ Qt und Xcodehttps://developer.apple.com/xcode/ ein durchdachtes Konzept für die IDE’s zur Programm Kompilierung eingesetzt haben macht CMake nicht mehr richtig Sinn. In der Umgebung in der ich arbeite schon einmal gar nicht. CMake macht hier aus einem „freien“ Projekt ein Xcode Projekt. Da kann man sein Projekt doch gleich in der richtigen Umgebung starten. Ich glaube es würde niemand auf die Idee kommen sein Projekt frei aufzusetzen. Zumal die aktuellen Projekte, die mit GUI, sehr aufwändig sind. 
Advertisements

CMake für Programmpakete


Hallo zusammen, wie bereits in früheren Einträgen beschrieben ist CMake sehr vielseitig. Im Gegensatz zu QMake lässt es sich für alle Arten von Projekten verwenden. Es ist nicht an eine Umgebung gebunden.

CPACK

Als zusätzliche Funktion haben die Entwickler sogar einen Paket Builder intergriert. Mit diesem, in dem normalen Programmumfang enthaltenen, Zusatzmodul kann man einfach das aktuelle Projekt packen. Wie nicht anders zu erwarten bietet CMake hier viele Ziele für verschiedene Umgebungen zu Verfügung.

Archive

Es können Archive generiert werden:

  • TGZ – Tar mit GnuZIP
  • STGZ – Selbstenpakendes TGZ
  • TBZ2 – Tar mit BZip2 (ein Archiv das besser komprimiert ist)
  • TZ – Tar mit Compress ?
  • ZIP – Für die Windows Umgebung. Es muss 7Zip oder WinZIP installiert sein.

Windows

Für die Windows Umgebung steht ein NSIS Generator zur Verfügung. Außerdem können für die Cygwin Umgebung Binäre und Quellpakete erzeugt werden.

Mac

Für die OSX Umgebung können diese Archive erzeugt werden:

  • DragNDrop
  • PackageMaker – PackageMaker muss installiert sein.
  • OSXX11 – hdiutil muss installiert sein.
  • Bundle

Linux

Für Unix können sowohl Debian (DEB), wie auch RPM Pakete erzeugt werden. Die komplette Beschreibung und die zugehörigen Parameter sind in dem WIKI von CMake zu finden.

Wie funktioniert es ?

Doch wie werden diese Funktion aufgerufen ? Das ist ganz einfach. Der CMakeLists.txt Datei muss nur eine Zeile hinzugefügt werden. INCLUDE(CPack)Dadurch wird nicht nur eine zusätzliche Textdatei mit dem Namen CPackList.txt erzeugt sondern auch ein neues Ziel in dem Makefile. Durch den Aufruf


make package

wird das für die aktuelle Umgebung definierte Standardpaket erzeugt. Die entsprechenden Optionen sollten in der CMakeLists.txt Datei festgelegt werden. So können Sie entsprechend der dem CMake bekannten Syntax festlegen wie das System das Paket erzeugt. Außerdem kann auch bei dem Aufruf noch die Variable belegt werden:

cmake -DCPACK_GENERATOR=DEB

würde ein Debian Paket erzeugt. Das geht alles einfach und locker von der Hand. Eine Warnung aber trotzdem noch. Die Betonung liegt hier wirklich auf einfach. Große komplizierte Paket lassen sich mit dieser Funktion natürlich auch nicht einfach erzeugen. Hier muss der Paketbetreuer oder der Programmierer verständlicherweise mehr Aufwand betreiben. Ein einfaches Beispiel ist hier zu finden.