Предлагает ли Qt (гарантированное) определение отладки? - PullRequest
37 голосов
/ 10 января 2012

Кто-нибудь знает официально поддерживаемый способ включить код только для отладочной сборки в Qt? Например:

#ifdef QT_DEBUG
// do something
#endif

В основном как Q_ASSERT, но для более сложных тестов.

Кажется, я не могу найти никакой документации, в которой говорится, что инфраструктура Qt гарантирует определение макроса отладки. Если нет, то какой разумный неофициальный способ реализовать эту функцию широко?

Ответы [ 3 ]

49 голосов
/ 10 января 2012

Qt определяет QT_NO_DEBUG для релизных сборок. В противном случае QT_DEBUG определяется.

Конечно, вы можете указать любые DEFINES в ваших .pro-файлах и указать для них debug или release.

17 голосов
/ 20 декабря 2013

Альтернативой является запись в файл вашего проекта что-то вроде:

debug {
  DEFINES += MYPREFIX_DEBUG
}
release {
  DEFINES += MYPREFIX_RELEASE
}

Тогда вы не будете зависеть от внутреннего определения Qt.

6 голосов
/ 22 ноября 2015

Для режима проверки чека:

#ifdef QT_DEBUG
    //Some codes
#endif

Для режима проверки чека:

#ifndef QT_DEBUG    //<== Please note... if not defined
    //Some codes
#endif
...