[Interest] Suppressing Q_ASSERT on release builds

Thiago Macieira thiago.macieira at intel.com
Tue Jan 10 16:35:46 CET 2017

Em terça-feira, 10 de janeiro de 2017, às 15:23:32 PST, Jani Tykka escreveu:
> It seems that QT_NO_DEBUG doesn't get defined when 3rd party libraries
> are built. Which means that if any 3rd party component includes
> qglobal.h will then end up defining Q_ASSERT in a way which is not
> desired for release builds.

Are you talking about 3rdparty components that are used inside Qt? Which one 
is including qglobal.h?

> If I explicitly define precompiler macro during "configure" then that
> will be seen by 3rd party components.
> I think this is problem in Qt build system. QT_NO_DEBUG should end up
> to all components being build. Any thoughts, ideas, experience on this
> area? How to get this fixed? Of course I can define QT_NO_DEBUG in
> configure, but then in case when I want to build with
> --debug-and-release I'd need to make to separate builds to allow
> assertions on with debug builds.

QT_NO_DEBUG is defined if you compile in release mode. It's right there in 

CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG

The macro wouldn't get defined if the .pro file does CONFIG -= qt. Can you point 
to which one(s) those are?

Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

More information about the Interest mailing list