CONAN-GATE

Nachdem meine Firma jetzt schon ein Jahr mit CONAN “herumwerkt”, wollte ich mal auch ein paar Tests bei mir zu Hause mit dem GATE Projekt machen.

Zusammengefasst: Vorerst “hilft” mir das System nicht wirklich … aber in Sachen Buildserver könnte es dennoch nützlich sein.


Herunterladen von Abhängigkeiten

Der wichtigste Anwendungsfall von CONAN ist beim GATE-Projekt aktuell nicht relevant: nämlich das Zusammensuchen mehrerer Bibliotheken.

Ich habe sämtliche zwingend erforderlichen externen Bibliotheken wie zlib oder libreSSL in das Projekt mit allen Sourcen integriert. Von daher brauche ich CONAN nicht um Daten von außen herunterzuladen.

… mit einer Ausnahme: GTK3

GTK3 wird in erster Linie für die Linux-Builds von GUI Anwendungen gebraucht. Doch für ein effektivers Debuggen liegen Header und vorkompilierte LIBs auch bei den externen GATE-Bibliotheken für Windows bei bei.

CMake sucht diese für den Link-Prozess zusammen mit:

 1if(GATE_UI_GTK)
 2  target_compile_definitions(${BINARY_NAME} PRIVATE GATE_UI_GTK)
 3
 4  FIND_PACKAGE(PkgConfig REQUIRED)
 5  PKG_CHECK_MODULES(GTK REQUIRED gtk+-3.0)
 6
 7  INCLUDE_DIRECTORIES(${GTK_INCLUDE_DIRS})
 8  LINK_DIRECTORIES(${GTK_LIBRARY_DIRS})
 9
10  ADD_DEFINITIONS(${GTK_CFLAGS} ${GTK_CFLAGS_OTHER})
11  TARGET_LINK_LIBRARIES(gateui ${GTK_LIBRARIES})
12endif()

Doch ob damit wirklich die richtigen Dateien gefunden werden hängt von vielen Konfigurationsdetails ab … vor allem wenn mehrere Versionen von GTK parallel installiert sind.

CONAN könnte diese Problem eleganter lösen, indem ein Requirement auf z.B.: gtk/3.24.20@bincrafters/stable
gesetzt wird.
Nun bräuchten nur noch die CMake Include- und Link-Anweisungen gesetzt werden:

1include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
2conan_basic_setup()
3
4target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})

und schon sollte CONAN die lässtige Aufgabe übernehmen, sich alle Sourcen herunterzuladen und korrekte Link-Pfade zum Projekt zu senden.

Fazit

Ich mache zwar gelegentlich ein paar Test mit CONAN, aber aktuell läuft die CMake Variante für mich ganz gut … so lange man die nötigen Bibliotheken selbst im Betriebssystem korrekt installiert hat.

Ein anderer Aspekt wäre auch das Bereitstellen des GATE-Frameworks durch CONAN. Aber ich denke mal, dass mich dieses Thema vor Mitte 2021 nicht tangieren wird, und dann bleibt fraglich ob überhaupt.

Und deshalb bleibe ich vorerst beim vertrauten Prozedere. Aber hey … wenn sich letztlich weitere Vorteile aus dem System ziehen lassen, wird die Priorität dafür schnell ansteigen.


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!