簡體   English   中英

Qt:調試和發布中moc輸出的區別?

[英]Qt: difference between moc output in debug and release?

使用Qt Visual Studio集成,添加一個新的Qt類會添加兩個單獨的moc.exe生成的文件 - 一個用於調試,一個用於發布(一個用於當前存在的任何其他配置)。 然而,這兩個最終生成的文件似乎是相同的。

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

有沒有人知道為什么每個配置都需要一個單獨的moc文件? 兩者之間何時有差異?

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

這不適用於uic生成的文件,因為它們是從.ui XML生成的,不能在調試和發布配置之間變化。

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

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM