2012-07-30 5 views
17

実行時にQObject内からQtがデバッグビルドまたはリリースビルドであるかどうかを検出するにはどうすればよいですか?qtが実行時にデバッグビルドを実行しているかどうかを検出します。

私はQT_NO_DEBUG macroについて知っていますが、それはQtのビルド時に解決されています。

これは役に立ちそうな例1:クラッシュハンドラとして機能するプラグインがあり、バックトレースを提供しています。私は、このプラグインがqtデバッグシンボルが利用可能な場合にのみ、この作業をすべて実行しようとします。

例2:私はpyqtで書かれたコマンドライン引数パーサを持っています。プログラムのヘルプを表示したい。 QApplicationがpyqtの中から-syncスイッチをサポートするかどうかをどのように調べるか。ビルドタイプに関する情報があれば、プログラムが理解できる引数リストから簡単に-syncを追加または削除できます。

+0

Qtライブラリがデバッグまたはリリースであるかどうかを知りたいのですか、またはアプリケーションがデバッグまたはリリースでコンパイルされているかどうかを知りたいですか? –

+0

Qtライブラリ。 –

答えて

30

あなただけのデバッグを実行しているかどうかをテストしたり、アプリケーションのビルドをリリース、QT_DEBUGを使用する場合:

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

これは明らかではなく、実行時にチェックするよりも、事前にプロセッサを使用していますけど。私はちょっとあなたが実行時にこのチェックをしたいと指定した理由について混乱しています。デバッグ機能の有無にかかわらずビルドするかどうかは、コンパイルする前にのみ行うことができます...

I 'あなたが接続しているQtライブラリがデバッグを有効にしてビルドされているかどうかを確認するためのQt4の簡単な方法はわかりません(QLibraryInfo::isDebugBuild()の追加でQt5が変わるように見えます)。

+0

質問に明確な説明が追加されました。 –

+2

あなたの答えを受け入れる、マクロではなく、QLibraryInfoのおしゃべりについて。私が求めている質問の多くは、これを含むQt5で解決されているようです。私はQt4のための適切な解決策がないことに同意するでしょう。 –

関連する問題