Связь с библиотекой 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.