Связывание с отладкой / выпуском lib с помощью qmake/Qt Creator

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

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

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

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

2 ответа

Решение

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

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

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

Бит внутри фигурных скобок используется, если DEBUG был добавлен в переменную qmake CONFIG, аналогично, содержимое внутри скобок освобождения включено, если RELEASE был добавлен в переменную CONFIG.

Вы также можете использовать "! Debug" вместо "release" (т. Е. Когда отладка отсутствует в конфигурации)

Вы можете найти больше информации о qmake здесь.

Нормальный

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"
}

Ср Qmake Docs.

РЕДАКТИРОВАТЬ 2013-11-17: не использовать -Lfoo в LIBS, Канонический способ состоит в том, чтобы добавить пути (без -L) чтобы QMAKE_LIBDIR,

Другие вопросы по тегам