CONAN und der MSVC Debugger

Eine weitere Story in meine CONAN Tagebuch ist seine schwierige Beziehung zu Debuggern.

Denn obgleich conan build . brav im lokalen Verzeichnis alle Quellcodes durchbauen kann, so bekommen wir dann jede Menge fehlende Abhängigkeiten, wenn wir die gebauten Programme im Debugger ausführen möchten.


CONAN’s wichtigstes Feature ist aus meiner Sicht auch sein größter Bug. Alles wird in den CONAN-Cache geladen und ein Projekt bekommt z.B. für CMAKE jede Menge Variablen injiziert, wo die Pfade zu den benötigten Headern und weitere Sourcen hinterlegt sind.

Das klappt in der Regel recht gut und der Compiler kann alles finden, was unter requirements auf der CONAN Seite deklariert ist.

Doch wenn man eine EXE ausführen will, braucht man auch die Binärdateien und diese sind ebenfalls im CONAN Cache in einem der unzähligen Hash-Paket-Unterzeichnisse versteckt.

Der reguläre Weg wäre nun, eine virtuelle Laufzeitumgebung (virtual run-environment) per CONAN einrichten zu lassen. conan install . -g virtualrunenv würde das erledigen und dann hat man ein .sh und ein .bat Script in seinem Verzeichnis, das bei Ausführung alle benötigten Verzeichnisse als PATH oder LD_LIBRARY_PATH einrichtet.

Innerhalb dieser Umgebung lässt sich dann auch problemlos ein Debugger starten um das Projekt zu inspizieren.

…. doch, wenn man viele CONAN Projekte verwaltet, ist das echt mühsam.

Visual Studio PATH Patch

Ein tolle Lösung, die meine Kollegen in der Firma gefunden haben, sieht wie folgt aus: Man definiert in CMAKE die target-Variable VS_DEBUGGER_ENVIRONMENT und setzt sie auf den Wert Path=${CONAN_BIN_DIRS};%Path%. Das sieht dann etwa so aus:

1set_target_properties(${PROJECT} PROPERTIES 
2  VS_DEBUGGER_ENVIRONMENT "Path=${CONAN_BIN_DIRS};%Path%"
3)

Lässt man nun ein MSVC Projekt erstellen, werden dem quasi alle notwendigen Infos injiziert und man kann direkt seine Software (per F5) starten und wegen der gesetzten Pfad Variable können auch alle anderen notwendigen von CONAN verwalteten Module geladen werden.

Fazit

Es sind solche Kleinigkeiten, die das Leben entscheidend erleichtern und in Summe Stunden einsparen.
Und diese eine CMAKE Zeile macht das Arbeiten zumindest unter Windows mit CONAN und MSVC um Längen erträglicher.

Doch für mich zeigt das Beispiel, dass es auf diese Weise vielleicht auch einen Weg gibt, einer Linux / POSIX Umgebung ein schöneres Arbeiten mit CONAN beizubringen.
Mal sehen, ob ich da auch was dazu finden kann …


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!

Meine Dokus über:
 
Externe Links zu: