Qt VS 工具生成不正确的 MOC 命令

标签 qt

我整个下午都在努力寻找 Visual Studio 2013 中 Qt VS Tools 的问题。我正在尝试更新现有的 .vcxproj 文件,该文件使用自行开发的机制来生成 MOC、UIC 等. 文件以改用 Qt VS Tools 机制。

我遇到的问题是为包含 Q_OBJECT 宏的 .h 文件生成的 MOC 命令。示例行(为简洁起见有所缩减)位于此处:

  <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  "-I$(QTDIR)\include\QtGui" "-I$(NOINHERIT)"</Command>

问题是 NOINHERIT 不存在,因此“-I$(NOINHERIT)”被计算为没有值的“-I”,并且 MOC 编译器会提示并且不生成 MOC 文件。我尝试清理继承的路径,检查和取消选中“从父级或项目默认值继承”,有时我看到的唯一变化是它有“-I”而没有 NOINHERIT 宏。

完全重新开始一个新的 .vcxproj 文件开始感觉像是我唯一的希望,但这是一个比我想要承担的任务大得多的任务,因为其中有大量的相互依赖关系,我不想创建再次。

我使用的是最新的 Qt VS Tools,版本 2.3.2。关于如何解决这个问题有什么想法吗?

最佳答案

当然,在我发帖五分钟后,我就发现了这个问题。包含的属性文件包含以下内容:

  <AdditionalIncludeDirectories></AdditionalIncludeDirectories>

而不是这个,它解决了问题:

  <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

有趣的是,就其值(value)而言,这不起作用:

  <AdditionalIncludeDirectories />

关于Qt VS 工具生成不正确的 MOC 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56435661/

相关文章:

qt - OpenGL 渲染到 QML 项目

c++ - 在 Qt 中处理多个窗口

c++ - 如何在 QGraphicsItem 中实现半透明重叠区域?

c++ - 不会从多插件应用程序中的每个插件加载资源

c++ - 如何在视网膜显示器上使用 QPainter、QOpenGLPaintDevice 和 QOpenGLWidget 流畅地绘制?

c++ - 如何在不释放鼠标按钮的情况下更改选定的文本

Qt 通过 HTTP 流式处理大文件并刷新到 eMMC 闪存

c++ - libvlc-qt realloc 执行 libvlc-qt 示例程序时出错

c++ - 通过 Qt 中的 Objective-c 的 lambda( block )槽

c++ - 插槽被意外调用