Ho un setup di progetto con un paio di app con una libreria condivisa, tutto questo è stato realizzato usando un progetto SUBDIRS, dove le app dipendono dalla libreria condivisa.Impostazione PATH/LD_LIBRARY_PATH per 'make check' con QMake
TEMPLATE = subdirs
SUBDIRS = app1 app2 sharedLib
app1.depends = sharedLib
app2.depends = sharedLib
Ogni applicazione contiene anche una serie di prove, con CONFIG += testcase
set.
Questo crea un target check
in modo che possiamo eseguire tutte le unit test dal livello superiore .pro utilizzando make check
.
Il problema è che alcuni dei test delle app richiedono la presenza del codice all'interno di sharedLib, pertanto deve essere rilevabile in base alle regole di ricerca di ogni libreria di piattaforme.
un'opzione di Windows On è quello di avere la posizione sharedLib sul PATH
, su linux possiamo aggiungere la posizione sharedLib a LD_LIBRARY_PATH
, su Mac DYLD_LIBRARY_PATH
.
Una soluzione è quella di impostare solo la posizione del lib condivisa costruito prima di eseguire make check
:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:build/sharedDll/
make check
e questo funziona, ma sembra un po 'ridondante in quanto è lo script di build stessi che stanno costruendo il condivise biblioteca in modo che sappiano il percorso della posizione binario sharedLib, che può essere richiamato in un file .pro/PRI a:
$$TOP_BUILDDIR/sharedLib/release
quindi, c'è comunque di impostare il PATH/LD_LIBRARY_PATH/DYLD_LIBRARY_PATH
dall'interno delle file di progetto per lo scopo s del comando make check
?