Qt ошибка компиляции связанная с QMessageLogger в режиме release
Задавал ранее этот вопрос в англоязычном сегменте https://stackoverflow.com/q/79571591/21579468
Пытаюсь использовать logging categories с Qt 5.12. Но получаю ошибку компиляции. Использую в Qt Creator-проекте Qmake and MinGW.
Подробности:
Делаю объявление для новой logging category:
Q_DECLARE_LOGGING_CATEGORY(logInfo)
Делаю определение для этой logging category:
Q_LOGGING_CATEGORY(logInfo, "Info: ")
Пытаюсь использовать новую категорию в main() так:
qDebug(logInfo()) << "Msg Debug";
В pro-файл добавлены дефайны:
CONFIG(release, debug|release) {
# release
DEFINES += QT_NO_DEBUG_OUTPUT
DEFINES += NDEBUG
}
Когда делаю build для debug, ошибок не возникает. Но когда для release, получаю ошибку компиляции:
C:\projects\Src\main.cpp:27: error: no matching function for call to 'QMessageLogger::noDebug(const QLoggingCategory&)'
../Src/main.cpp: In function 'int qMain(int, char**)':
../Src/main.cpp:27:25: error: no matching function for call to 'QMessageLogger::noDebug(const QLoggingCategory&)'
qDebug(logInfo()) << "Msg Debug"; //TODO
^
и
C:\Qt\Qt5.12.12\5.12.12\mingw73_64\include\QtCore\qglobal.h:1206: In file included from C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtCore/qglobal.h:1206:0,
In file included from C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtCore/qglobal.h:1206:0,
from C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtGui/qtguiglobal.h:43,
from C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtWidgets/qtwidgetsglobal.h:43,
from C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtWidgets/qmainwindow.h:43,
from C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtWidgets/QMainWindow:1,
from ../../Utility1/Src/MainWindow/MainWindow.h:4,
from ../Src/main.cpp:1:
C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtCore/qlogging.h:97:10: note: candidate: void QMessageLogger::noDebug(const char*, ...) const
void noDebug(const char *, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3)
^~~~~~~
C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtCore/qlogging.h:97:10: note: no known conversion for argument 1 from 'const QLoggingCategory' to 'const char*'
C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtCore/qlogging.h:140:14: note: candidate: QNoDebug QMessageLogger::noDebug() const
QNoDebug noDebug() const Q_DECL_NOTHROW;
^~~~~~~
C:/Qt/Qt5.12.12/5.12.12/mingw73_64/include/QtCore/qlogging.h:140:14: note: candidate expects 0 arguments, 1 provided
Пользовался этой статьёй https://doc.qt.io/qt-5/debug.html. При цели debug выводит в консоль (похоже библиотека добавляет дополнительно часть строки " :"):
Info: : Msg Debug
Вопрос: так некорректно делать?
Доп. информация:
при таком использовании выводит как ожидалось:
qCDebug(logInfo()) << "Msg Debug";