Qt moc.exe nicht die Erzeugung *.moc-Datei
Ich versuche zu bauen, die qtestlib/tutorial1 Beispiel, aber die testqstring.moc Datei nicht generiert wird, wenn ich nmake
(ich bin mit Qt 4.5.2 unter Windows XP SP3).
Ich kopierte testqstring.cpp aus dem tutorial-Verzeichnis zu meinem build-Verzeichnis (C:\sandboxes\testqstring) und aus den Qt command prompt lief vsvars32.bat-Datei von meinem MS Visual Studio 8-installation der VS-environment-Variablen.
Nach dem tutorial, ich sollte laufen:
> qmake -project "CONFIG += qtestlib"
> qmake
> nmake
Wenn ich das mache, ist die Ausgabe von nmake
ist:
C:/Apps/Qt/2009.03/qt/bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_TESTLIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -ich"....\Apps\Qt\2009.03\qt\include\QtCore" -I"....\Apps\Qt\2009.03\qt\include\QtGui" -I"....\Apps\Qt\2009.03\qt\include\QtTest" -I"....\Apps\Qt\2009.03\qt\include" -I"." -Ich"....\Apps\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"....\Apps\Qt\2009.03\qt\mkspecs\win32-g++" -D__GNUC__ -DWIN32 testqstring.cpp -o debug\testqstring.moc
g++ -c -g -frtti -fexceptions -mthreads -Wand -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_TESTLIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -ich"....\Apps\Qt\2009.03\qt\include\QtCore" -I"....\Apps\Qt\2009.03\qt\include\QtGui" -I"....\Apps\Qt\2009.03\qt\include\QtTest" -I"....\Apps\Qt\2009.03\qt\include" -I"." -Ich"....\Apps\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"....\Apps\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\testqstring.o testqstring.cpp
testqstring.cpp:63:27: testqstring.moc: No such file or directory
NMAKE : fatal error U1077: 'C:\Apps\Qt\2009.03\mingw\bin\g++.EXE' : return code '0 x 1'
Stop.
NMAKE : fatal error U1077: 'C:\PROGRA~1\MICROS~3\VC\BIN\nmake.exe' : Rückgabe-code "0x2'
Stop.
So, ich kann sehen, dass moc.exe aufgerufen wird zum generieren von debug - /testqstring.moc, aber die Datei wird nie erstellt.
Danke für alle Unterstützung, die Sie bieten kann.
Ich hatte das gleiche problem. Aber ich löste es durch das entfernen der Datei qt.conf aus <qtpath>/bin-Verzeichnis.
InformationsquelleAutor Doug Cuthbertson | 2009-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie Sie versuchen, zu verwenden
nmake
zu tun, ein build mit MinGW.nmake
ist eine MSVC-tool.Wenn Sie wollen eine erstellen mit MinGW müssen Sie
mingw32-make
. Wenn Sie wollen, um ein build mit MSVC müssen Sie eine Qt gebaut mit MSVC (was bedeutet, dass Sie haben, um es selbst bauen, oder mit einer kommerziellen Lizenz).InformationsquelleAutor rohanpm
Hatte ich das problem, dass die moc.exe nicht, erzeugen keine moc-Dateien mit nmake. Der Grund war eine falsche moc.exe Pfad innerhalb des Makefiles.Debug.
Etwas wie:
C:/Qt/2009.03/qt/bin\moc.exe
Ich es zu ändern:
C:\Qt\2009.03\qt\bin\moc.exe
und jetzt funktioniert es. 😉
Leider qmake generiert die makefiles jedesmal, wenn Sie Sie ausführen aus dem Menü oder neu/sauber ist die Lösung/Projekt. Ich denke es ist ein bug der qmake-Konfiguration.
Fix und dauerhaft Sie haben die Datei zu finden C:\MyQtDir\mkspecs\win32-msvc2008\qmake.conf. Für die anderen configs zu ändern win32-msvc2008.
War es für mich an C:\Qt\2009.03\qt\mkspecs\win32-msvc2008\qmake.conf
Suche nach der phrase "QMAKE_MOC". Finden Sie einige Zeilen wie diese:
QT_INSTALL_BINS ist ein Weg, der scheint falsch zu sein. Die Verzeichnistrennzeichen sind immer noch'/', sollte aber '\'. Im moment weiß ich nicht, wo genau muss ich ändern QT_INSTALL_BINS. Aber der qt Pfad wird sich nicht ändern für mich, so dass ich ersetzt das makro durch fest definierte Pfade:
Nun gibt es keine Probleme mit dem moc nicht mehr. Umbauten funktionieren auch.
Hoffe, das hilft 😉
InformationsquelleAutor Bersi
Haben Sie versucht, mit dem compiler/tools mit Qt /mingw/bin? (Auf meinem system, Qt ist installiert C:\Qt\2009.03.) Letztes mal habe ich geprüft, die nicht-kommerzielle distribution von Qt funktioniert nicht mit Visual Studio. Ich habe gerade versucht diese aus der Qt-Eingabeaufforderung und es funktionierte.
Hoffe, das hilft.
InformationsquelleAutor kenrogers
Ar Sie sicher, dass die moc nicht generiert? Es lebt in den Debug-Verzeichnis, so müssen Sie entweder #include "Debug/teststring.moc" oder #include mit einer zusätzlichen -IDebug-compiler-option.
InformationsquelleAutor Gunther Piez
Im Falle von noch compilieren mit VC nmake gibt es einen workaround für dieses Problem hier:
http://bugreports.qt-project.org/browse/QTBUG-6470
InformationsquelleAutor vladimir