在 Visual Studio 2010 中为新 QOBJECT 文件生成 MOC

Posted

技术标签:

【中文标题】在 Visual Studio 2010 中为新 QOBJECT 文件生成 MOC【英文标题】:Generating MOC for new QOBJECT files in visual studio 2010 【发布时间】:2014-06-01 20:33:12 【问题描述】:

我使用 qmake 创建了一个项目,它自动为直接或间接继承 QObject 的类生成 moc 文件。但是,如果我添加一个继承 QObject 的新类,QT 插件在构建过程中不会生成 MOC 文件。我应该调整哪些设置,以便每次添加新的 QObject 文件时可以自动执行此操作?

【问题讨论】:

【参考方案1】:

如果您的自定义类没有自动 moc'ed,您可能忘记在类声明中添加 Q_OBJECT 宏或将 QObject 作为在多重继承的情况下继承的第一个类(类的顺序)您的派生类继承事务)。如果不是您的情况,您可能需要阅读以下内容:

http://truth2.wordpress.com/2010/09/04/custom-build-rules-for-qt-under-visual-studio-2010/

顺便说一句:QT 版本有其细微差别,因此如果您告知您使用的版本会很有帮助。

【讨论】:

我使用的是 Qt 4.8.6。我忘了提。但这种联系奏效了。为这些文件添加自定义构建规则后,它工作正常。谢谢。【参考方案2】:

我只是找到了一种新的方法来处理“添加新的.h/.cpp文件后没有生成moc_*.cpp文件”错误。

首先,您转到“解决方案资源管理器->右键单击新.h文件的属性页”,然后将构建更改为“自定义构建工具”。

然后,你应该找到一个成功生成“moc_*”的.h文件,并将“自定义构建工具->常规”中的所有内容复制到新的.h文件设置页面。

之后,构建您的项目。

最后,将生成的“moc_*”文件添加到您的项目中。

完成!现在你可以像往常一样构建它了。

【讨论】:

我遇到了同样的问题,并在this 问题下发布了我的解决方案。我在 VS 2015 中添加了解决此问题所需的一些额外步骤。

以上是关于在 Visual Studio 2010 中为新 QOBJECT 文件生成 MOC的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2010 C++ 中为 /// 生成 XML 文档注释

如何在/使用 Visual Studio 2010 中为 64 位 Windows 构建 libcurl?

我可以在 Visual Studio 2010 中为某些文件打开优化器吗?

Visual Studio 2012 项目不会在 2010 年打开

Visual Studio 2010 中的负载测试执行时间

Visual Studio 可以在 C++ 头文件中为我管理函数原型吗?