Связь с библиотекой debug/release с помощью qmake/Qt Creator
Я использую Qt Creator и имею проект Qt GUI, который зависит от проекта статической библиотеки С++. Я хочу связать версию версии приложения GUI с сборкой выпуска .lib и отладочной версией приложения GUI с помощью debug.lib. Я узнал, как добавить дополнительные библиотеки в проект, включив в файл .pro файл следующую строку:
LIBS += -L./libfolder -lmylib.lib
Но я не вижу, как я могу использовать другую команду -L
для выпуска и отладки.
Есть ли поддержка в qmake для этого?
Ответы
Ответ 1
В файле проекта вы можете сделать что-то вроде этого
debug {
LIBS += -L./libfolder -lmydebuglib.lib
}
release {
LIBS += -L./libfolder -lmyreleaselib.lib
}
Бит внутри скобок отладки используется, если DEBUG добавлен в переменную qmake CONFIG, так же, как и внутри скобок освобождения, включен, если RELEASE добавлен в переменную CONFIG.
Вы также можете использовать "! debug", а не "release" (т.е. когда debug не находится в конфигурации)
Более подробную информацию о qmake можно найти здесь.
Ответ 2
Нормальный
debug:LIBS += ...
else:LIBS += ...
Решение прерывается, когда пользователи наивно используют CONFIG += debug
или CONFIG += release
для переключения между сборками debug и 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 docs.
EDIT 2013-11-17. Не используйте -Lfoo
в LIBS
. Канонический способ заключается в добавлении путей (без -L
) к QMAKE_LIBDIR
.