web-dev-qa-db-fra.com

Qt propose-t-il une définition de débogage (garantie)?

Quelqu'un connaît-il un moyen officiellement pris en charge pour inclure du code de débogage uniquement dans Qt? Par exemple:

#ifdef QT_DEBUG
// do something
#endif

Fondamentalement comme Q_ASSERT mais pour des tests plus complexes.

Je n'arrive pas à trouver de documentation qui dit que le framework Qt garantit de définir une macro de débogage. S'il n'y en a pas, quelle serait une manière judicieuse non officielle d'implémenter cette fonctionnalité à l'échelle du projet?

39
Samuel Harmer

Qt définit QT_NO_DEBUG pour les versions. Autrement QT_DEBUG est défini.

Bien sûr, vous êtes libre de spécifier n'importe quel DEFINES dans vos fichiers .pro et de les étendre pour debug ou release.

51
laalto

Une alternative consiste à écrire dans votre fichier de projet quelque chose comme:

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

Ensuite, vous ne dépendrez pas de la définition interne de Qt.

18
eSKon

Pour vérifier le mode de débogage:

#ifdef QT_DEBUG
    //Some codes
#endif

Pour vérifier le mode de libération:

#ifndef QT_DEBUG    //<== Please note... if not defined
    //Some codes
#endif
6
S.M.Mousavi