2008-10-09 49 views
3

使用Qt Visual Studio集成,添加一個新的Qt類會添加兩個單獨的moc.exe生成的文件 - 一個用於調試,另一個用於發佈(另一個用於當前存在的其他配置)。然而,這兩個最終生成的文件似乎是相同的。Qt:調試和發佈中moc輸出的區別?

另一方面,當添加UI類時,uic.exe生成的文件沒有這種分隔,並且對於所有配置都是相同的文件。

有沒有人有一個想法,爲什麼每個配置都需要一個單獨的moc文件?兩者之間有什麼區別?

回答

5

我的猜測是需要單獨的調試和發佈版本,因爲moc輸出是從用戶定義的源代碼生成的。因此,如果預處理的類源在調試版和發行版之間不同(例如,只存在於調試版中的信號),則調試版和發佈版的moc輸出可能會有所不同。

這不適用於uic生成的文件,因爲它們是從.ui XML生成的,因爲這些文件在調試版和發行版配置之間無法改變。

5

Moc解析預處理器指令的來源。所以如果你有這樣一個頭文件:

class Test : public QObject 
{ 
    Q_OBJECT 
public: 
     Test();    
public slots: 

#ifndef DEBUG 
     void Foo(); 
#endif 
}; 

然後,槽Foo將只存在於發佈版本而不是調試版本。 Moc將生成不同的moc.cpp文件,具體取決於是否設置了DEBUG(在本例中)符號。

相關問題