Qt sagt mir, dass meine SCHLITZ doesnt existieren, aber mit einem Make sauber, macht es mehr beschweren tut
-
18-09-2019 - |
Frage
, wenn ich eine neue Kopie von unserem SVN herunterladen, stellen Sie dann mein Programm ausführen, Qt mich erzählt, dass einer meiner KERBT nicht funktioniert, aber mit einem Handy-Dandy macht sauber dann machen, so scheint es, das Problem zu lösen. i weiterhin Änderungen im Code auf meinem PC machen und diese Botschaft zeigt nie wieder.
C ++ Qt 4.6 gcc
hat jemand hat dieses Problem? und Ideen?
Dank
Lösung
Qt erstellt eine ganze Reihe von Metadaten über Ihre Q_OBJECT Klassen, wenn Sie zu bauen. Das Metadaten wird in ‚moc‘ Dateien gespeichert, von denen einer mit dem C ++ Code inkonsistent geworden sind. Es ist in der Regel eine schlechte Idee in Ihrem Versionskontrollsystem Zwischen Build Stufen zu speichern. Ich würde vorschlagen, make clean
läuft, dann an Ihrem VCS suchen, um herauszufinden, welche Dateien gelöscht wurde, dann das Ergebnis begehen.
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"
Andere Tipps
Meine Vermutung? Es gibt eine Datei in Ihrem Repository, das von make clean
entfernt ist, aber nicht durch make
neu erstellt (wahrscheinlich, weil es nicht mehr notwendig), und es ist etwas in dieser Datei, die Probleme verursacht.
Wenn Sie Ihre .moc Dateien im Repository (sollte man nicht), dann könnten sie nicht mehr synchron mit der Realität bekommen. Hat ein make includes
das Problem zu beheben?
Was alles gelöscht wird, wenn Sie eine make clean
tun? Was alles ist dort, nachdem Sie das Projekt Remake? Alle Dateien gereinigt sollten neu gemacht werden. Wenn sie es nicht sind, wie Anon. sagt einer von ihnen seltsame Dinge tun könnte.