web-dev-qa-db-ja.com

Qtは(保証された)デバッグ定義を提供しますか?

Qtにデバッグビルドのみのコードを含める公式にサポートされている方法を知っている人はいますか?例えば:

#ifdef QT_DEBUG
// do something
#endif

基本的にQ_ASSERTに似ていますが、より複雑なテスト用です。

Qtフレームワークがデバッグマクロを定義することを保証しているというドキュメントを見つけることができません。ない場合、この機能プロジェクト全体を実装するための賢明な非公式方法は何でしょうか?

39
Samuel Harmer

Qtはリリースビルド用にQT_NO_DEBUGを定義しています。それ以外の場合は、QT_DEBUGが定義されます。

もちろん、.proファイルで任意のDEFINESを指定して、それらをdebugまたはreleaseにスコープ指定することは自由です。

51
laalto

別の方法は、次のようなプロジェクトファイルに書き込むことです。

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

そうすれば、Qtの内部定義に依存しなくなります。

18
eSKon

チェックデバッグモードの場合:

#ifdef QT_DEBUG
    //Some codes
#endif

チェックリリースモードの場合:

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