2012-01-10 17 views
32

Czy ktoś zna oficjalnie obsługiwany sposób włączenia kodu debug-build tylko w Qt? Na przykład:Czy Qt oferuje (gwarantowaną) definicję debugowania?

#ifdef QT_DEBUG 
// do something 
#endif 

Zasadniczo podobnie jak Q_ASSERT, ale dla bardziej złożonych testów.

ja nie mogę znaleźć żadnej dokumentacji, która mówi, że ramy Qt gwarantuje zdefiniować debugowania makra. Jeśli nie jest, jaki byłby sensowny nieoficjalny sposób na wykonanie tego projektu?

Odpowiedz

39

Qt definiuje QT_NO_DEBUG dla wersji wydań. W przeciwnym razie zdefiniowano QT_DEBUG.

Oczywiście można dowolnie określić numer DEFINES w swoich plikach .pro i ustawić je dla zakresu debug lub release.

+0

wiesz o jakichkolwiek dowodów, że 'QT_NO_DEBUG' jest oficjalnie wspierany do użytku poza ramami Qt? –

+1

Nie, po prostu czytanie źródła. Chociaż jest mało prawdopodobne, aby definicje w opublikowanych nagłówkach API zostały zmienione bez bardzo dobrego powodu. – laalto

13

Alternatywą jest napisanie czegoś w pliku projektu, takich jak:

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

Wtedy nie będzie zależeć od wewnętrznej definicji Qt.

+0

Nie była to nierozsądna sugestia, ale ** starałem się ** unikać dodatkowych definicji. –

+0

Dlaczego? Jakie wady widzisz w definicji dodatkowej? – eSKon

4

W trybie debugowania wyboru:

#ifdef QT_DEBUG 
    //Some codes 
#endif 

Do wyboru trybu wydaniu:

#ifndef QT_DEBUG //<== Please note... if not defined 
    //Some codes 
#endif 
Powiązane problemy