Open-Source-Paketmanager Conan auf Python-Basis C- und C++-Bibliotheken mit Conan paketieren

Von Thomas Joos |

Anbieter zum Thema

Beim Paketieren von Code in C oder C++ für verschiedenen Betriebssysteme sollte der verwendete Paketmanager deren Besonderheiten kennen und adressieren. Die Open-Source-Lösung Conan ist dazu in der Lage. Wir zeigen die Möglichkeiten in diesem Beitrag.

Beispiel für ein Conan Recipe zum Einbinden der fmt-Bibliothek.
Beispiel für ein Conan Recipe zum Einbinden der fmt-Bibliothek.
(Bild: Joos / Conan.io)

Conan ist ein mit Python entwickelter Paketmanager, der C- und C++-Programme paketieren kann. Das Open-Source-Tool steht unter der MIT-Lizenz zur Verfügung. Der Paketmanager ist darüber hinaus dezentral und plattformübergreifend verfügbar. Interessant ist die quelloffene Lösung vor allem dann, wenn Entwickler eine Anwendung mit C und C++ für verschiedene Betriebssystem zur Verfügung stellen wollen.

Conan kann mit Windows, Linux, macOS, FreeBSD, Android und iOS umgehen und Programme oder Apps für mobile Systeme paketieren. Das Tool arbeitet unter anderem mit Visual Studio, CMake, Makefiles und SCons zusammen. Hier kann Conan zum Beispiel viele Konfigurationsparameter automatisiert übergeben. Auch andere Build-Systeme lassen sich anbinden, in diesem Fall ist die automatische Übergabe von Parameter nicht allerdings nicht möglich, wohl aber das Paketieren.

Natürlich lassen sich die Parameter manuell übergeben. Hier spielt es eine sehr große Rolle, dass die entsprechenden Parameter in korrekter Form an das Build-System übergeben werden. Generell ist das Tool vergleichbar mit NuGet, npm oder JavaScript. Grundsätzlich kann Conan auf allen Systemen zum Einsatz kommen, die auch Python unterstützen. Die Installation erfolgt schlussendlich auch zusammen mit Python, zumindest in den meisten Fällen.

Conan steht als kostenlose Open-Source-Lösung zur Verfügung

Conan findet sich auch bei GitHub. Developer können ihre Pakete auf ihren eigenen Servern hosten. Der Paketmanager integriert mit Artifactory und Bintray. Durch die Unterstützung von zahlreichen Plattformen, zum Beispiel Docker und WSL, lässt sich Conan in nahezu allen Szenarien einsetzen, in denen Code mit C und C++ zum Einsatz kommt.

Der Paketmanager kann Binärdateien verwalten. Diese lassen sich für nahezu jede Plattform erstellen, hochladen und herunterladen. Ebenfalls möglich ist das Cross-Kompilieren. Das spart einiges an Zeit bei der Entwicklung und bei Continuous Integration (CI).

Zentrales Repository mit Conan umsetzen

Im ConanCenter stehen für verschiedene Betriebssysteme fertige Pakete und Bibliotheken bereit.
Im ConanCenter stehen für verschiedene Betriebssysteme fertige Pakete und Bibliotheken bereit.
(Bild: Joos / Conan.io)

Conan verteilt Pakete nach dem Client-Server-Prinzip. In Conan steht mit dem ConanCenter ein zentrales Repository zur Verfügung. Dieses umfasst unterschiedliche Open-Source-Bibliotheken sowie vorkompilierte Binärpakete für gängige Compiler. Conan bietet eine Integration mit der JFrog Artifactory. Diese enthält die kostenlose Artifactory Community Edition für Conan. Dadurch können Entwickler ihre eigenen Pakete auf eigenen Servern erstellen.

Entwickler erstellen die Pakete mit einem Build-System, das Conan unterstützt. Diese haben wir in diesem Beitrag bereits aufgelistet. Sobald die Pakete auf den Servern zur Verfügung stehen, lassen sie sich verteilen. Conan-Clients laden die Pakete von einem der integrierten Server herunter. Conan-Pakete beschreiben in einem Rezept, wie eine Software zu paketieren ist.

Kommt eines der von Conan direkt unterstützten Build-Systeme zum Einsatz (Visual Studio, CMake, Makefiles, Scons), lassen sich die Rezepte schnell schreiben. Die Rezepte und deren Syntax finden sich ebenfalls im ConanCenter. Hierüber können Entwickler ihre eigenen Rezepte auf Basis bereits vorhandener Rezepte erstellen.

Für ein Paket kann Conan beliebige Binärpakete der unterschiedlichen Plattformen nutzen und auf diese zugreifen. Dazu gehören alle relevanten Betriebssysteme für PCs, Server oder auch mobile Endgeräte. Wenn auf einem Conan-Server ein Binärpaket vorhanden ist, das für eine Zielplattform zum Einsatz kommen soll, erspart sich Conan die Neuerstellung. Nur wenn keine Binärpakete auf dem Server vorliegen, erstellt Conan auf Anforderung ein neues Paket. Dieses steht dann dafür aber wiederum in Zukunft zur Verfügung, wenn Conan dieses Binärpaket für zukünftige Bereitstellungen braucht.

Conan in der Praxis: Installieren mit Python

Conan lässt sich auf Rechnern am einfachsten über den Python-Paketmanager pip installieren. Für den Betrieb von Conan ist daher Python 3 (inklusive pip) notwendig. Um Conan zu installieren, reicht der Befehl „pip install conan“. Auf Debian und Ubuntu ist es beispielsweise möglich, Conan inklusive Python mit den folgenden Befehlen installiert werden:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung
sudo apt install python3 python3-pip
sudo pip3 install conan

In macOS lässt sich der Paketmanager auch mit Homebrew installieren:

brew update
brew install conan

Im ConanCenter findet sich mit „fmt“ beispielsweise eine quelloffene Formatierungsbibliothek als Alternative zu C‘s stdio und den iostreams von C++.
Im ConanCenter findet sich mit „fmt“ beispielsweise eine quelloffene Formatierungsbibliothek als Alternative zu C‘s stdio und den iostreams von C++.
(Bild: Joos / Conan.io)

Anschließend lassen sich bereits Pakete erstellen. In der Dokumentation zu Conan sind dazu die notwendigen Anleitungen zu finden. Auf der Conan-Seite „Getting Started“ stehen dazu auch Beispielprojekte zur Verfügung, das Beispiel-Repository von Conan auf GitHub enthält entsprechende Downloads. Das gängigste Beispiel ist ein MD5-Calculator. Dieses Beispiel lässt sich mit dem folgenden Befehl herunterladen:

git clone https://github.com/conan-io/examples.git && cd examples/libraries/poco/md5

Nach der Installation stehen die Optionen mit dem Befehl „conan“ zur Verfügung. Für die einzelnen Parameter von Conan zeigt der Befehl auch eine Information zu den Funktionen des Paketmanagers an.

(ID:48733876)