当我从我们的SVN下载一个新的副本时,make然后运行我的程序,Qt告诉我,我的一个SLOTS不起作用,但有一个方便的花花公子make clean然后make,它似乎解决了问题。我继续在我的电脑上对代码进行更改,该消息再也没有显示出来。
C ++ Qt 4.6 GCC
有没有人有这个问题? 和想法?
感谢
答案 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一样。他说,其中一人可能做的很奇怪。