2009-07-15 4 views
24

Ich verwende Qt Creator und habe ein Qt-GUI-Projekt, das von einem statischen C++ - Bibliotheksprojekt abhängt. Ich möchte die Release-Version der GUI-App mit dem Release-Build der .lib und der Debug-Version der GUI-App mit der Debug-.lib verknüpfen. Ich habe herausgefunden, wie zusätzliche Bibliotheken, indem Sie eine Zeile wie die folgende in meiner .pro-Datei dem Projekt hinzuzufügen:Verknüpfung mit einer Debug/Release-Bibliothek mit qmake/Qt Creator

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

Aber ich kann nicht sehen, wie ich einen anderen -L Befehl für die Freigabe verwenden können und Debug baut.

Gibt es Unterstützung in qmake, dies zu tun?

Antwort

22

In der Projektdatei können Sie in den Debug-Klammern

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

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

Das bisschen wie dieses etwas tun wird verwendet, wenn DEBUG auf die CONFIG Qmake Variable hinzugefügt wurde, ähnlich Zeug in den Release-Klammern, wenn RELEASE enthalten wurde der CONFIG-Variablen hinzugefügt.

Sie können auch verwenden! "Debug" und nicht als "Release" (das heißt, wenn Debug ist nicht in der config)

Sie können weitere Informationen über Qmake here finden.

+2

Beachten Sie, dass es sich verschluckt, wenn Sie die Klammer auf die nächste Zeile setzen ... :-( – nus

+1

Ist das auch für Windows? Was ist, wenn ich Platz in den Pfaden von Lib-Dateien habe. –

42

Die normalen

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

Lösung bricht, wenn Benutzer naiverweise CONFIG += debug oder CONFIG += release zwischen Debug- und Release umschalten baut (und sie tun, niemand erinnert sich CONFIG -= release release_and_debug vor CONFIG += debug :) zu sagen.

Dies ist der übliche Weg, um Umfang auf debug:

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

Cf. the qmake docs.

EDIT 2013.11.17: Verwenden Sie -Lfoo in LIBS nicht. Der kanonische Weg besteht darin, die Pfade (ohne -L) zu QMAKE_LIBDIR hinzuzufügen.

+2

Was genau meinst du? auf kanonische Weise, Marc? Jemand, der nicht genug Ruf hat, fragt das in [hier] (http://stackoverflow.com/questions/24511097/qt-qmake-libdir-vs-libs). – lpapp

+1

+1 wegen der "kanonischen" Form funktioniert sowohl unter Windows als auch unter Linux Ich hatte in Windows einige Probleme, da Debug {} release {} immer mit debug {} libs verlinkt hat. – McLeary