web-dev-qa-db-ja.com

qmake / QtCreatorを使用したデバッグ/リリースライブラリとのリンク

Qt Creatorを使用していて、C++静的ライブラリプロジェクトに依存するQtGUIプロジェクトがあります。 GUIアプリのリリースバージョンを.libのリリースビルドにリンクし、GUIアプリのデバッグリリースをdebug.libにリンクしたいと思います。 .proファイルに次のような行を含めることで、プロジェクトにライブラリを追加する方法を見つけました。

LIBS += -L./libfolder -lmylib.lib

しかし、リリースビルドとデバッグビルドに別の-Lコマンドを使用する方法がわかりません。

これを行うためのqmakeのサポートはありますか?

25
Rob

プロジェクトファイルでは、次のようなことができます

debug {
    LIBS += -L./libfolder -lmydebuglib.lib
}

release {
    LIBS += -L./libfolder -lmyreleaselib.lib
}

DEBUGがCONFIGqmake変数に追加されている場合は、デバッグ中括弧内のビットが使用されます。同様に、CONFIG変数にRELEASEが追加されている場合は、リリース括弧内のものが含まれます。

「release」ではなく「!debug」を使用することもできます(つまり、デバッグが構成にない場合)

Qmakeの詳細については ここ を見つけることができます。

25
Nick

普通

debug:LIBS += ...
else:LIBS += ...

ユーザーがCONFIG += debugまたはCONFIG += releaseを素朴に使用してデバッグビルドとリリースビルドを切り替えると、ソリューションが壊れます(そして、そうします。CONFIG -= release release_and_debugの前にCONFIG += debugと言うことを覚えている人はいません:)。

これは、debugをスコープする標準的な方法です。

CONFIG( debug, debug|release ) {
    # debug
    QMAKE_LIBDIR += "path/to/debug/lib"
} else {
    # release
    QMAKE_LIBDIR += "path/to/release/lib"
}

Cf. qmakeドキュメント

EDIT 2013-11-17LIBS-Lfooを使用しないでください。正規の方法は、パス(-Lなし)をQMAKE_LIBDIRに追加することです。

44