2009-07-15 4 views
24

Utilizzo Qt Creator e un progetto Qt GUI che dipende da un progetto di libreria statica C++. Voglio collegare la versione di rilascio dell'app GUI con la versione di rilascio di .lib e la versione di debug dell'applicazione GUI con il debug .lib. Ho scoperto come aggiungere librerie aggiuntive al progetto tra cui una linea come la seguente nel mio file .pro:Collegamento con una lib di debug/release con qmake/Qt Creator

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

Ma non riesco a vedere come posso utilizzare un comando diverso -L per il rilascio e il debug costruisce.

C'è un supporto in qmake per fare questo?

risposta

22

nel file di progetto si può fare qualcosa di simile

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

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

Il bit all'interno delle parentesi graffe di debug viene utilizzata se DEBUG è stato aggiunto alla variabile qmake CONFIG, in modo simile roba dentro le parentesi di rilascio è incluso se STAMPA è stato aggiunto alla variabile CONFIG.

È inoltre possibile utilizzare "! Debug", piuttosto che "rilascio" (vale a dire quando il debug non è nel config)

È possibile trovare ulteriori informazioni su qmake here.

+2

Si noti che soffoca se si mette il tutore sulla linea successiva ... :-( – nus

+1

È lo stesso per Windows? Che dire se ho spazio nei percorsi dei file Lib. –

42

I normali

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

pause soluzione quando gli utenti utilizzano ingenuamente CONFIG += debug o CONFIG += release per passare tra il debug e build di rilascio (e lo fanno, nessuno si ricorda di dire CONFIG -= release release_and_debug prima CONFIG += debug :).

Questo è il modo canonico di portata su 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: Non utilizzare -Lfoo in LIBS. Il modo canonico consiste nell'aggiungere i percorsi (senza lo -L) a QMAKE_LIBDIR.

+2

Che cosa intendi esattamente? in modo canonico, Marc? Qualcuno senza una sufficiente reputazione lo sta chiedendo in [here] (http://stackoverflow.com/questions/24511097/qt-qmake-libdir-vs-libs). – lpapp

+1

+1 perché la forma "cannonica" funziona sia con Windows che con Linux. Avevo un po 'di problemi con Windows da quando uso debug {} release {} era sempre collegato a debug {} libs. – McLeary