Qt告诉我,我的SLOT不存在,但是使用make clean,让它不再抱怨了

时间:2009-12-08 22:38:12

标签: c++ qt signals-slots

当我从我们的SVN下载一个新的副本时,make然后运行我的程序,Qt告诉我,我的一个SLOTS不起作用,但有一个方便的花花公子make clean然后make,它似乎解决了问题。我继续在我的电脑上对代码进行更改,该消息再也没有显示出来。

C ++ Qt 4.6 GCC

有没有人有这个问题? 和想法?

感谢

3 个答案:

答案 0 :(得分:4)

Qt在构建时会创建一大堆关于Q_OBJECT类的元数据。该元数据存储在“moc”文件中,其中一个文件可能与您的C ++代码不一致。在版本控制系统中存储中间构建阶段通常是个坏主意。我建议运行make clean,然后查看您的VCS以找出已删除的文件,然后提交结果。

在svn:

make clean
svn st     # you should see some files deleted
svn rm <all the deleted files that svn st showed>
svn ci -m "Cleaned out intermediate build stages"

答案 1 :(得分:1)

我的猜测?您的存储库中有一个文件被make clean删除但未被make重新创建(可能因为它不再需要),而且此文件中的某些内容导致了问题。

答案 2 :(得分:1)

如果您将.moc文件存储在存储库中(您不应该),那么它们可能会与现实不同步。 make includes是否也解决了这个问题?

执行make clean时会删除所有内容?重制项目后,那里有什么?应重新清除所有已清理的文件。如果不是,就像Anon一样。他说,其中一人可能做的很奇怪。