Frage

Vor kurzem habe ich VS Addin von Qt Software installiert und ich importierte mein .pro Projekt VS2008. Im Allgemeinen sind alle funktionieren gut, mit einer kleinen, aber lästiger Ausnahme.

Angenommen, ich eine file.cpp habe mit einer Klasse hat, die erklärt, dass es sich um eine Q_OBJECT ist. So, als solche die Datei MOC-ed und moc_file.cpp erzeugt wird, und ist in Lösung unter „Generierte Dateien“ zur Verfügung. So weit so gut.

Das Komische ist, wenn ich etwas in file.cpp (fügen Sie eine Zeile, zum Beispiel) zu ändern, und speichern Sie die Datei mit Strg + S, wird die moc_file.cpp von Build ausgeschlossen (Sie können ein kein Eintrag Zeichen sehen auf dem Symbol). Und ich traf viele typische Linker Fehler, wenn ich F7 drücken, um eine Lösung zu erstellen. Um die Situation zu beheben, muß ich auf die Eigenschaften von moc_file.cpp gehen und von „Ja“, „Nein“ „von Build ausschließen“ zu ändern. Dann funktioniert alles einwandfrei.

erlebt jemand anderes das gleiche? Mache ich etwas falsch?

War es hilfreich?

Lösung

Problem gelöst. Ich fand heraus, dass in meiner handgefertigten .proDatei mein Projekt zu beschreiben, ich hatte MOC_DIR wie folgt angegeben:

  

MOC_DIR = .moc

Nach „Generierte Dateien“ zu Visual Studio-Verzeichnis zu importieren war die gleiche für beide Release- und Debug. Also, wenn meine aktive Konfiguration war Debug zum Beispiel, wenn ich eine Datei gespeichert es aus Build ausgeschlossen wurde, weil es sinnvoll, für Release-bezogene Datei war - ebenso wie rpg und Andrew vorgeschlagen. Nachdem das Verzeichnis zu ändern \ $ (Configurationname) das Problem .moc ist nicht mehr zu sehen (und ich sehe zwei Versionen jeder generierte Datei in meiner Lösung - ein für jede Konfiguration).

Vielen Dank für Ihre Hilfe jeder!

Andere Tipps

Eigentlich habe ich die Lösung für dieses „Feature“ gefunden. Sie müssen beide Dateien aus GeneratedFiles \ Debug und GeneratedFiles \ Debug (oder von anderen Konfigurationen Verzeichnisse) hinzuzufügen. Qt wird ausschließt alles zu bauen, was gehört nicht zu dem aktuell ausgewählten Build-Typ.

Ja, ich benutze die neuesten VS Addin und mein Projekt richtig als Qt-Projekt zu sehen ist.

hast Du die Konfiguration korrekt?

Öffnen Sie das Fenster „Debug-Konfigurationseinstellungen“ Legen Sie die folgenden Artikel, wie unten angegeben:

  • "Build Befehlszeile" qmake -project & Qmake & Nmake debug
  • "Clean-Befehle" nmake Debug-clean
  • "Rebuild Befehlszeile" qmake & Nmake debug
Wiederholen

das gleiche mit der Freigabe Konfiguration

Ich habe das von Build-Verhalten in VS2008 (VS 2003 auch), aber das Projekt baut korrekt ausgeschlossen gesehen. Wenn Sie eine moc'able Datei ändern, wird Qt haben die moc'ed Datei neu zu erstellen, da es veraltet ist.

Ich vermute, dass Qt-Algorithmus ist so etwas wie:

  • erkennen, die Datei geändert wurde
  • setzt die alte moc-Datei als von Build ausgeschlossen
  • Sie eine neue Datei in das Projekt mit dem gleichen Namen hinzufügen und es in der Build

Ein Blick auf meinem VS 2003-Projekt, kann ich sehen, dass einige moc_ * Dateien zweimal im Projekt enthalten sind, eine Version als ausgeschlossen von Build gesetzt ist und der andere nicht.

Recreating die .vsproj Datei mit qmake könnte das Problem beheben.

Für jeden QObject Datei, die Sie haben, erstellt die QT-Plugin eine moc_ Datei für jede Build-Konfiguration (in der Regel nur Debug und Release). Wenn Sie die aktuelle Konfiguration ändern können Sie die Kein Eintrag Zeichen von einer Datei in die andere gehen sehen.
Die moc_ Dateien sollten nicht ändern, wenn Sie die CPP-Datei ändern. nur, wenn Sie die H-Dateien ändern .. All dies führt mich zu etwas, dass etwas nicht stimmt mit Ihrer Konfiguration geschehen ist und wirklich die beste Art und Weise zu beheben es mit qmake neu zu erstellen ist so etwas wie dies mit:

qmake -spec win32-msvc2008
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top