2016-04-06 12 views
2

これは、続きthis questionの続きです。アイデアは、デバッグモードでのlib名前にdをAppenにすることですので、私は、デバッグビルドだけのためにqmakeコマンドはデバッグモードでのみ実行できます。

win32:LIBS ~= s/-l(.*)/-l\1d/g 

を実行したいです。

私は

win32:debug:LIBS ~= s/-l(.*)/-l\1d/g 

を試みたが、それはまた、リリースモードで実行されます。私は通常、それを行う方法

+3

CONFIG(デバッグ、デバッグ|リリース):win32:LIBS〜= s/-l(。*)/ -l \ 1d/g – Devopia

+0

'win32:debug: LIBS〜= s/-l(。*)/ -l \ 1d/g'はしますか? – KcFnMi

+0

[Qt Creatorのターゲットを検出する方法(デバッグ/リリース)(Visual Studio)](http://stackoverflow.com/questions/32046181/how-to-detect-qt-creators-target-debug-release-ビジュアルスタジオ) – adlag

答えて

2

あなたはdebugの存在のための簡単なテストの代わりにCONFIG(debug, debug|release)を使用する必要があります。 CONFIG変数は、debugreleaseの複数のエントリを含むことができる点で特別ですが、の最後の数値はとなります。

リリースモードであっても、CONFIGはsomething, debug, something, releaseのように見えます。releaseが最後のため「勝利」しますが、スコープテストではそれがわかりません。

これはqmakeの奇抜です。/

CONFIG変数の値の順序が重要である(つまり、最後の1つのセットは、相互排他的な値のアクティブな構成と見なされます)、これは文書化されています。 2番目のパラメータを使用して、考慮する一連の値を指定できます。例:

+0

私はCONFIGロジックを完全には理解していませんでした。 CONFIG(debug、debug | release)をプロジェクトファイルで何度も使用できますか? – KcFnMi

+1

@KcFnMi確かに、それはテストです。これはconstメソッドのようなものです。状態を変更するものではありません。 –

0

ザッツ:最初に、私は、異なるプラットフォームに異なる規則を使用すると考えられ、ちょうどここでは例として与え

はあなたが右の後にこのルールを追加することができますので、

CONFIG(debug, debug|release) { 
    unix: TARGET = $$join(TARGET,,,d) 
    win32: TARGET = $$join(TARGET,,,d) 
} 

プラットフォームが存在していますlibs/appsのターゲット名を設定してください

通常のレイアウトは、あなたのライブラリなどを生成するための.proファイルにこのルールがあります:

.priファイルに
CONFIG(debug, debug|release) { 
    unix: LIBS += -L../libs -L../../libs -lyourlibnamed 
    win32: LIBS += -L../libs -L../../libs -lyourlibnamed  
} else { 
    unix: LIBS += -L../libs -L../../libs -lyourlibname 
    win32: LIBS += -L../libs -L../../libs -lyourlibname 
} 

関連する問題