当前位置:  开发笔记 > 编程语言 > 正文

Qt:调试和发布中moc输出的区别?

如何解决《Qt:调试和发布中moc输出的区别?》经验,为你挑选了2个好方法。

使用Qt Visual Studio集成,添加一个新的Qt类会添加两个单独的moc.exe生成的文件 - 一个用于调试,一个用于发布(一个用于当前存在的任何其他配置).然而,这两个最终生成的文件似乎是相同的.

另一方面,在添加UI类时,uic.exe生成的文件没有这种分离,并且对于所有配置都是相同的文件.

有没有人知道为什么每个配置都需要一个单独的moc文件?两者之间何时有差异?



1> Andrew Medic..:

我的猜测是需要单独的调试和发布版本,因为moc输出是从用户定义的源代码生成的.因此,如果预处理类源在调试和发布之间不同(例如,仅存在于调试版本中的信号),则moc输出在调试版本和发布版本之间可能会有所不同.

这不适用于uic生成的文件,因为它们是从.ui XML生成的,不能在调试和发布配置之间变化.



2> David Dibben..:

Moc解析预处理器指令的源代码.所以如果你有一个像这样的头文件:

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

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

然后插槽Foo将仅存在于发布版本中,而不存在于调试版本中.Moc将生成不同的moc.cpp文件,具体取决于是否设置了DEBUG(在本例中)符号.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有