2012-07-30 98 views
17

運行調試版本我如何在運行時檢測到一個QObject內是否沒有了Qt它鏈接的是一個調試版本或發佈版本?檢測是否Qt是在運行時

我瞭解QT_NO_DEBUG macro,但畢竟是在編譯的時候Qt的解決。

的時,這將是有用的實施例1:我有充當崩潰處理提供一個回溯的插件。如果qt調試符號可用,我只希望這個插件嘗試完成所有這些工作。

實施例2:我有寫在PyQt的命令行參數分析器。它想打印程序幫助。它是如何發現QApplication是否會支持pyqt中的-sync開關。如果我有關於構建類型的信息,我可以從程序可以理解的參數列表中輕鬆添加或刪除-sync。

+0

你想知道Qt庫是調試版還是發佈版,或者你想知道你的應用程序是在調試版還是發行版中編譯? – 2012-07-30 08:22:59

+0

Qt庫。 – 2012-07-30 18:57:24

回答

30

如果你只是想測試你是否正在運行應用程序的調試或發佈版本,使用QT_DEBUG

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

儘管這顯然是使用預處理器,而不是在運行時檢查。我有點困惑,爲什麼你指定你想使這個檢查在運行時,看到建有或沒有調試能力的決定只能在編譯之前做...

我m沒有意識到Qt4中有任何簡單的方法來檢查你所鏈接的Qt庫是否已經啓用了調試功能(雖然我注意到這在Qt5中會增加QLibraryInfo::isDebugBuild())。

+0

增加對問題的說明。 – 2012-07-30 18:58:28

+2

接受您的答案,不是針對宏,而是針對QLibraryInfo tidbit。看來,我一直在問的很多問題都是用Qt5解決的,包括這個問題。我會承認Qt4沒有適當的解決方案。 – 2012-08-08 00:56:29