2012-07-30 14 views
17

¿Cómo puedo detectar desde un QObject en tiempo de ejecución si el Qt al que está vinculado es una compilación de depuración o una versión de lanzamiento?Detectar si qt ejecuta una compilación de depuración en el tiempo de ejecución

Sé acerca de QT_NO_DEBUG macro, pero eso se resuelve en el tiempo de compilación para Qt.

Ejemplo 1 de cuándo esto sería útil: tengo un complemento que actúa como controlador de fallos, proporcionando una traza inversa. Solo quiero que este complemento intente hacer todo este trabajo si los símbolos de depuración qt están disponibles.

Ejemplo 2: Tengo un analizador de argumentos de línea de comandos escrito en pyqt. Quiere imprimir la ayuda del programa. ¿Cómo se entera si QApplication admite el conmutador -sync o no dentro de pyqt? Si tuviera información sobre el tipo de compilación, podría agregar o eliminar fácilmente la lista de argumentos que el programa entiende.

+0

¿Desea saber si las bibliotecas de Qt son de depuración o versión o desea saber si su aplicación está compilada en depuración o versión? –

+0

La biblioteca Qt. –

Respuesta

30

Si lo que desea es probar si está ejecutando una depuración o la liberación de construcción de su aplicación, utilice QT_DEBUG:

#ifdef QT_DEBUG 
    qDebug() << "Running a debug build"; 
#else 
    qDebug() << "Running a release build"; 
#endif 

A pesar de esto, obviamente, utiliza el pre-procesador, en lugar de comprobar en tiempo de ejecución. Estoy un poco confundido sobre por qué has especificado que quieres hacer esta comprobación en tiempo de ejecución, ya que la decisión de compilar con o sin capacidad de depuración solo puede hacerse antes de compilar ...

I ' No estoy al tanto de ninguna manera fácil en Qt4 para verificar si la biblioteca de Qt con la que está enlazando ha sido creada con la depuración habilitada (aunque noté que esto parece estar cambiando en Qt5 con la adición de QLibraryInfo::isDebugBuild()).

+0

Se agregó aclaración a la pregunta. –

+2

aceptar su respuesta, no para las macros, pero por el dato QLibraryInfo. Parece que muchas de las preguntas que he estado haciendo se resuelven con Qt5, incluido este. Admitiré que no hay una solución adecuada para Qt4. –

Cuestiones relacionadas