Qt で qmake のライブラリ ファイルの依存関係を指定するにはどうすればよいですか?
-
13-09-2019 - |
質問
以下を含む SomeLib.pro ファイルを用意します。
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
次に、依存する SomeApp.pro で次のようにします。
..
debug:LIBS += -lSomeLib_debug
..
qmake で SomeLib に触れた場合、強制的に SomeApp をビルドするにはどうすればよいですか?
解決
あなたは、正確なライブラリファイル名を与える必要があるためそれは醜いですが、この作業をする必要があります:
TARGETDEPS + = libfoo.aを
他のヒント
ライブラリを含めるプロジェクトのコンテキスト メニューで [ライブラリの追加...] をクリックすると、QT Creator が作業を実行します。
これらの変数は自動的に構成されます。
- ライブラリ
- IncludePATH
- 依存パス
- PRE_TARGETDEPS
こちらも参照 http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html
ザヒルさんのコメントへの返信では、qmakeのファイルで、この依存関係を記述すると、DLLを使用している場合は不要ですが、あなたのexeファイルは静的ライブラリに依存している場合、の基本的なのあることを指摘し、おそらく価値はあります。
qmake
は、この能力を提供していません。
その代わり、サブディレクトリでアプリとlibを入れ、その後、次のようになります彼らの親ディレクトリにMakefileを作成します:
all: FRC
cd Somelib && qmake && $(MAKE)
cd SomeApp && qmake && $(MAKE)
FRC:
そして、常にこのディレクトリからmake
を実行します。
私が使用します:
POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a
これは動作しますが、すべてのオペレーティングシステム/コンパイラごとに異なるライブラリへのフルパスを指定する必要があるので、不器用です。
確かにそれが可能にすることはできません、あなたは逆依存関係の検索を行うにはqmakeのを使用して話しているの?あなたはライブラリAに変更を加えた後、それはアプリのB(およびライブラリAに依存して他のアプリ)を構築するためにそう何uがしたいことはありますか?
それは少しVBRUN300.DLLが更新された場合は、すべてのVisual Basicアプリケーションを再コンパイルすると言ってようなものだ?