Ich habe ein Projekt-Setup mit ein paar Apps mit einer gemeinsamen Bibliothek, das ist alles gut mit einem SUBDIRS-Projekt, wo die Apps auf die gemeinsame Bibliothek angewiesen sind.Einstellung PATH/LD_LIBRARY_PATH für 'make check' mit QMake
TEMPLATE = subdirs
SUBDIRS = app1 app2 sharedLib
app1.depends = sharedLib
app2.depends = sharedLib
Jede App enthält auch eine Reihe von Tests mit CONFIG += testcase
set.
Dadurch wird ein check
Ziel erstellt, sodass wir alle Komponententests von der obersten Ebene .pro unter Verwendung von make check
ausführen können.
Das Problem besteht darin, dass einige der App-Tests das Vorhandensein des Codes innerhalb der sharedLib erfordern, daher muss es nach den Suchregeln der einzelnen Plattformbibliotheken erkennbar sein.
Unter Windows ist eine Option, die sharedlib Standort auf dem PATH
, auf Linux haben, können wir die sharedlib Standort LD_LIBRARY_PATH
, auf dem Mac DYLD_LIBRARY_PATH
hinzuzufügen.
Eine Lösung ist nur die Position des eingebauten gemeinsamen lib gesetzt, bevor make check
ausgeführt wird:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:build/sharedDll/
make check
und das funktioniert, aber es scheint ein wenig überflüssig, da es die Build-Skripte selbst ist, die das gemeinsame bauen Bibliothek, so dass sie den Pfad zum sharedlib Binärspeicherort kennen, die aus .pro/pri Dateien verwiesen werden kann:
$$TOP_BUILDDIR/sharedLib/release
so gibt es ohnehin die PATH/LD_LIBRARY_PATH/DYLD_LIBRARY_PATH
aus den Projektdateien für den Zweck eingestellt s des Befehls make check
?