私は共有ライブラリを使っていくつかのAppsを使ってプロジェクトをセットアップしていますが、これは共有ライブラリに依存するSUBDIRSプロジェクトを使ってうまく構築されています。QMakeで 'make check'のPATH/LD_LIBRARY_PATHを設定する
TEMPLATE = subdirs
SUBDIRS = app1 app2 sharedLib
app1.depends = sharedLib
app2.depends = sharedLib
各アプリケーションには、CONFIG += testcase
が設定された多数のテストも含まれています。
これはcheck
ターゲットを作成します。したがって、すべての単体テストをmake check
を使用してトップレベルの.proから実行できます。
問題は、いくつかのアプリケーションテストではsharedLib内にコードが存在する必要があるため、各プラットフォームライブラリのルックアップルールに従って検出可能である必要があります。
Windowsでは、PATH
にsharedLibの場所を設定するオプションがあります.linuxではsharedLibの場所をLD_LIBRARY_PATH
(MacのDYLD_LIBRARY_PATH
)に追加できます。
一つの解決策は、単にmake check
を実行する前に構築された共有ライブラリの場所を設定することです:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:build/sharedDll/
make check
をして、これは動作しますが、それは共有を構築しているビルドスクリプトそのものであるとして、それは少し冗長なようです彼らはで.PRO/PRIファイル内から参照することができsharedLibバイナリの場所へのパス、知っているので、ライブラリ:だから
$$TOP_BUILDDIR/sharedLib/release
を、目的のプロジェクトファイルの中からPATH/LD_LIBRARY_PATH/DYLD_LIBRARY_PATH
を設定することがとにかくありmake check
コマンドの