¿Alguien sabe oficialmente una forma compatible incluyen la depuración construir sólo el código en Qt? Por ejemplo:

#ifdef QT_DEBUG
//do something
#endif

Básicamente como Q_ASSERT pero para los tests más complejos.

Me parece que no puede encontrar toda la documentación que dice que el framework Qt garantías para definir una depuración de macros. Si no la hay, lo que sería una sensible no oficial manera de implementar esta característica del proyecto?

3 Comentarios

  1. 49

    Qt define QT_NO_DEBUG para las versiones de lanzamiento. De lo contrario, QT_DEBUG está definido.

    Por supuesto, usted es libre para especificar cualquier DEFINES en su .pro de archivos y el alcance de ellos, ya sea para debug o release.

    • ¿Conoce usted alguna evidencia de que QT_NO_DEBUG es oficialmente compatible para su uso fuera del marco de Qt?
    • No, sólo la lectura de la fuente. Aunque es poco probable que las definiciones publicado en API encabezados ha cambiado sin una muy buena razón.
  2. 17

    Una alternativa es escribir en el archivo de proyecto algo como:

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

    Entonces usted no dependerá de la Qt definición interna.

    • No irrazonable sugerencia pero me fue específicamente en busca de evitar definiciones adicionales.
    • Por qué? ¿Qué desventajas ve usted en adicional definir?
    • De esta manera, ambos pueden ser definidos, que probablemente no quería. El uso por ejemplo de configuración(debug debug|release) para comprobar las versiones de depuración, ver: wiki.qt.io/…
  3. 6

    Para comprobar el modo de depuración:

    #ifdef QT_DEBUG
        //Some codes
    #endif

    Para comprobar el modo de disparador:

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

Dejar respuesta

Please enter your comment!
Please enter your name here