2009-07-15 1 views
24

Я использую Qt Creator и имею проект Qt GUI, который зависит от проекта статической библиотеки C++. Я хочу связать версию версии приложения GUI с сборкой выпуска .lib и отладочной версией приложения GUI с помощью debug .lib. Я узнал, как добавить дополнительные библиотеки в проект, включая линию как следующий в моем файле .pro:Связывание с debug/release lib с qmake/Qt Creator

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

Но я не могу понять, как я могу использовать другой -L команду для выпуска и отладки строит.

Есть ли поддержка в qmake для этого?

ответ

22

В файле проекта вы можете сделать что-то вроде этого

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

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

бит внутри скобок отладки используется, если DEBUG была добавлена ​​к переменной QMAKE CONFIG, подобно вещи внутри скобок выпуска включается, если RELEASE был добавлен в переменную CONFIG.

Вы можете также использовать «! Отладки», а не «релиз» (то есть, когда отладка не в конфигурации)

Вы можете найти более подробную информацию о QMAKE here.

+2

Обратите внимание, что он задыхается, если вы положите скобу на следующую строку ... :-( – nus

+1

То же самое и для Windows? Что, если у меня есть место на путях файлов Lib. –

42

Нормальные

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. the qmake docs.

EDIT 2013-11-17: Не использовать -Lfoo в LIBS. Канонический путь заключается в добавлении путей (без -L) в QMAKE_LIBDIR.

+2

Что именно вы имеете в виду? по каноническому пути, Марк? Кто-то, у которого нет достаточной репутации, спрашивает, что в [здесь] (http://stackoverflow.com/questions/24511097/qt-qmake-libdir-vs-libs). – lpapp

+1

+1, потому что «каноническая» форма работает как с окнами, так и с linux. У меня возникли проблемы в Windows, поскольку использование debug {} release {} всегда связывалось с debug {} libs. – McLeary