Qt moc失败,没有错误消息

时间:2010-04-13 16:50:26

标签: c++ visual-studio-2008 qt

所以我对Qt很陌生,而且我刚从其他同时也是Qt新手的人那里继承了一个项目。顺便说一句,他本周不在身边。我们正在使用Visual Studio 2008,并安装了最新版本的Qt(4.6.2)。

该项目建立在我的同事的机器上,我可以从svn获得项目并直接构建它。但在任何其他情况下,它拒绝在我的机器上构建,并且它没有给我很多解释原因。即使我只是做“构建清洁”然后“构建”它也不起作用。任何轻微的修改都会使它失败。

当我尝试构建整个项目时,我收到错误消息:

  

1> Moc'ing MatrixTypeInterface.h ...   1> moc:无法创建   \ GeneratedFiles \调试\ moc_MatrixTypeInterface.cpp; \ GeneratedFiles \调试\ moc_matrixtypeinterface.cpp   1>项目:错误PRJ0019:工具   从“Moc'ing”返回错误代码   MatrixTypeInterface.h ...“

moc工具没有提供任何关于它为什么不起作用的错误消息,我昨天大部分时间都在浪费时试图找出原因。我得到了VS用来调用moc的命令,我自己进入了命令行。它没有在屏幕上写任何东西。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

我终于找到了答案。我的同事今天回到了办公室,我用他的机器上的构建日志来获得他的完整moc命令(大约4行)。除了最后,我们的moc命令基本相同。他的命令以:

结束
  

-o“。\ GeneratedFiles \ $(ConfigurationName)\ moc _ $(InputName).cpp”

我的命令以:

结束
  

-o“。\ GeneratedFiles \ $(ConfigurationName)\ moc _ $(InputName).cpp;。\ GeneratedFiles \ Debug \ moc_matrixtypeinterface.cpp”

我检查了该文件的自定义构建步骤,并删除了多余的位。之后,文件编译得很好。我不知道qt如何或为什么决定添加这个额外的花絮,但确实如此。

感谢您的帮助。你们中的一些人怀疑这是一个文件系统问题,实际上在Windows文件名中不允许使用分号。但我觉得根本原因是Qt创建了错误的构建字符串。

我接受了我自己的答案,希望能帮助别人。

答案 1 :(得分:1)

这很可能是文件系统错误,您可能没有“GeneratedFiles”文件夹,或者没有正确的权限。

我遇到过不同版本的moc和加载项使用“Generated”或“Generated Files”或“GeneratedFiles”作为文件夹的问题。检查所有构建步骤的设置。

答案 2 :(得分:0)

您的.vcproj文件可能已损坏。我之前遇到过这个问题,因为有不同版本的Qt和Qt VS插件最终破坏了我的.vcproj文件。有一段时间,我不得不手动修复.vcproj文件(My AdditionalDependencies =“...”行被换掉并切断需要调整的各种头文件,我手动修复了每个新头的那些需要进行调整。)

干净的重新安装Visual Studios + Qt + Qt插件最终解决了这个问题。检查你的.vcproj文件,看看它是否有意义。

答案 3 :(得分:0)

在moc运行之前,您确定文件路径是否正确并且是否存在?由于似乎向moc提供了相对路径,因此我会在运行时找出moc的工作目录。

您的.vcproj文件是如何生成的?是用qmake吗?还是cmake?还是从零开始?