2016-06-16 52 views
1

私はQt &で初心者です。qmakeが.proファイルで提供するフレームワークを評価し始めました。 私の質問の主な目的は、qmake変数 "LIBS" & "PRE_TARGETDEPS"とライブラリの静的リンクの違いを詳細に理解することです。Qtの.proファイルのLIBSとPRE_TARGETDEPS

My Qt Appは、依存するC++静的ライブラリの束を使用します。この場合も、静的ライブラリには相互依存関係がある。各ライブラリには、ビルドの方法をサポートするための.proファイルが含まれています。もちろん、アプリには.proファイルもあります。

ここで、静的ライブラリでは、libStaticAがlibStaticBに依存する場合は、両方ともC++ライブラリです。両方とも.proファイルがあります。 以下のように、+ LIBS & -lでlibStaticA.proの依存関係について言及するだけで十分ですか? + LIBS + = -L/path_To_libStaticB/-llibStaticB

それともそれは十分 + PRE_TARGETDEPS以下+ = /path_To_libStaticB/libStaticB.a

のようなPRE_TARGETDEPSと依存関係に言及したり、私は両方の言及すべきでしょうか? + PRE_TARGETDEPS + = /path_To_libStaticB/libStaticB.a + LIBS + = /path_To_libStaticB/libStaticB.a

LIBS & PRE_TARGETDEPSの関連性とは何ですか?

PS:私の開発マシンはosxです。ここ

答えて

3

LIBSを私の理解を明確にする任意の説明については、事前に ありがとう:

は、プロジェクト内でリンクされるライブラリのリストを指定します。 Unix -l(ライブラリ)と-L(ライブラリパス)フラグを使用すると、qmakeはWindows上でライブラリを正しく処理します(つまり、ライブラリのフルパスをリンカに渡します)。 -l libが置かれているディレクトリーを見つけるために、qmakeのライブラリーが存在する必要があります。

​​:ターゲットが依存

リストライブラリ。 Visual StudioやXcodeプロジェクトファイル用のジェネレータなどのバックエンドの中には、この変数をサポートしていないものがあります。一般に、この変数はこれらのビルドツールで内部的にサポートされており、依存する静的ライブラリを明示的にリストするのに便利です。

Qtは、静的にリンクされたライブラリの依存関係を格納するために変数​​を使用します。アプリケーションをビルドするたびにライブラリが強制的に再リンクされます。
この変数が指定されておらず、ライブラリを更新して再構築すると、プログラムは引き続き古いライブラリを使用します。

あなたの質問には、静的ライブラリを使用する場合、(ほとんど)常にLIBと​​の両方を使用する必要があります。

引用:またQmake variable reference
興味深い:この素敵な&簡単な説明のためのAdding libraries to Qt Projects

+0

感謝。これは役立ちます – Rubin

関連する問題