Why does qDebug work in Release builds?

c++, qdebug, qt

Solution

`qDebug` is also preprocessor-controlled, but it has its own special macro, `QT_NO_DEBUG_OUTPUT`. If you add that to your Release build defines, it will be removed.

Problem

Coming from MFC, I treated `qDebug()` much like `TRACE()`, assuming that it is removed from Release builds by the preprocessor (in MFC it's done using `#define TRACE 1 ? (void*) 0 : AfxTrace`). To my surprise, however, `qDebug()` is executed in Release builds as well. How do I change this? And also, why is this so, what was the reasoning of the developers of Qt behind this decision?

Original source

Related problems