我整个下午都在努力寻找 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/