documentacion - pyqt4 example
Detectar si qt está ejecutando una construcción de depuración en tiempo de ejecución (2)
Ambas sugerencias en la respuesta aceptada son ciertas. Hay un efecto secundario con Qt5 en macOS . De forma predeterminada, los marcos usan una versión de lanzamiento de su biblioteca y el resultado de este método siempre será un valor "falso".
¿Cómo puedo detectar desde un QObject en tiempo de ejecución si el Qt con el que está vinculado es una compilación de depuración o lanzamiento?
Sé sobre la macro QT_NO_DEBUG , pero eso se resuelve en el momento de la compilación para Qt.
Ejemplo 1 de cuándo sería útil: tengo un complemento que actúa como un controlador de fallas, proporcionando un seguimiento. 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 argumento de línea de comando escrito en pyqt. Quiere imprimir ayuda del programa. ¿Cómo averigua si QApplication admitirá el cambio -sync o no desde pyqt? Si tuviera información sobre el tipo de compilación, podría agregar o eliminar -sync fácilmente de la lista de argumentos que el programa entiende.
Si solo desea probar si está ejecutando una versión de depuración o versión de su aplicación , use QT_DEBUG
:
#ifdef QT_DEBUG
qDebug() << "Running a debug build";
#else
qDebug() << "Running a release build";
#endif
Aunque esto obviamente usa el preprocesador, en lugar de verificar el tiempo de ejecución. Estoy un poco confundido en cuanto a por qué ha especificado que desea realizar esta comprobación en tiempo de ejecución, ya que la decisión de compilar con o sin capacidad de depuración solo se puede tomar antes de compilar ...
No conozco ninguna forma fácil en Qt4 para verificar si la biblioteca Qt con la que te estás vinculando se ha creado con la depuración habilitada (aunque noté que esto parece estar cambiando en Qt5 con la adición de QLibraryInfo::isDebugBuild()
).