Mam konfigurację projektu z kilkoma aplikacjami z biblioteką współdzieloną, wszystko to jest ładnie zbudowane przy użyciu projektu SUBDIRS, w którym aplikacje zależą od biblioteki współdzielonej.Ustawienie zmiennej PATH/LD_LIBRARY_PATH dla "make check" z QMake
TEMPLATE = subdirs
SUBDIRS = app1 app2 sharedLib
app1.depends = sharedLib
app2.depends = sharedLib
Każda aplikacja zawiera również szereg testów, z CONFIG += testcase
zestawie.
Spowoduje to utworzenie docelowego obiektu check
, dzięki czemu możemy przeprowadzić wszystkie testy jednostkowe z poziomu najwyższego poziomu .pro przy użyciu make check
.
Problem polega na tym, że niektóre testy aplikacji wymagają obecności kodu w sharedLib, dlatego musi być wykrywalny zgodnie z regułami wyszukiwania każdej biblioteki platform.
W systemie Windows jedną z opcji jest lokalizacja sharedLib na PATH
, w systemie Linux możemy dodać lokalizację sharedLib do LD_LIBRARY_PATH
, na komputerze Mac DYLD_LIBRARY_PATH
.
Jednym z rozwiązań jest po prostu ustawić lokalizację wbudowanej współdzielonej lib przed uruchomieniem make check
:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:build/sharedDll/
make check
i to działa, ale wydaje się nieco zbędny, ponieważ jest to same skrypty kompilacji, które budują wspólne biblioteka, żeby wiedzieć, ścieżkę do sharedLib binarnym lokalizacji, które można odwoływać się od wewnątrz .pro/plików pri adresem:
$$TOP_BUILDDIR/sharedLib/release
tak, to tam i tak ustawić PATH/LD_LIBRARY_PATH/DYLD_LIBRARY_PATH
od wewnątrz plików projektu w celu s polecenia make check
?