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

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

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

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

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

Ответы [ 2 ]

43 голосов
/ 15 июля 2009

нормальный

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

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

23 голосов
/ 15 июля 2009

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

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

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

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

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

Более подробную информацию о qmake вы можете найти здесь .

...