Qt moc.exe Erzeugung nicht * .moc Datei
Frage
Ich versuche, die qtestlib / tutorial1 Beispiel , aber die testqstring.moc Datei nicht erzeugt wird, wird zu bauen, wenn ich nmake
laufen (Ich bin mit Qt 4.5.2 auf Windows XP SP3).
Ich kopierte testqstring.cpp aus dem Tutorial-Verzeichnis zu meinem Build-Verzeichnis ( C: \ Sandkästen \ testqstring ) und aus der Qt-Eingabeaufforderung RAN vsvars32.bat Datei von meinem MS Visual Studio 8 Installation der VS Umgebungsvariablen hinzuzufügen.
Nach dem Tutorial, soll ich laufen:
> qmake -project "CONFIG += qtestlib"
> qmake
> nmake
Wenn ich 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 -I“.... \ 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".“ -I ".... \ 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 -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_TESTLIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I ".... \ 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".“ -I ".... \ 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: Keine solche Datei oder das Verzeichnis
NMAKE: fatal error U1077: 'C: \ Apps \ Qt \ 2009.03 \ mingw \ bin \ g ++ EXE.': Return code '0x1' Stopp.
NMAKE: schwerwiegender Fehler U1077: 'C: \ PROGRA ~ 1 \ MICROS ~ 3 \ VC \ BIN \ nmake.exe': Return-Code '0x2' Stopp.
So kann ich sehen, dass moc.exe genannt wird debug / testqstring.moc zu erzeugen, aber die Datei wird nie erzeugt.
Vielen Dank für jegliche Anleitung können Sie zur Verfügung stellen.
Lösung
Es sieht aus wie Sie versuchen, nmake
zu verwenden, um einen Build mit MinGW zu tun. nmake
ist ein MSVC Werkzeug.
Wenn Sie einen Build mit MinGW tun möchten, müssen Sie mingw32-make
verwenden. Wenn Sie einen Build mit MSVC tun möchten, müssen Sie Qt mit MSVC verwenden gebaut (was bedeutet, dass Sie es selbst bauen oder eine kommerzielle Lizenz haben).
Andere Tipps
hatte ich das Problem, dass die moc.exe keine moc-Dateien mit nmake generiert haben. Der Grund war eine falsche moc.exe Papierweg in der Makefile.Debug.
So etwas wie:
C: /Qt/2009.03/qt/bin \ moc.exe
ich ändern Sie es an:
C: \ Qt \ 2009.03 \ qt \ bin \ moc.exe
und jetzt funktioniert es. ;)
Unfortunally Qmake erzeugt die Makefiles jedes Mal wenn Sie es aus dem Menü ausführen oder neu erstellen / reinigen Sie die Lösung / Projekt. Ich denke, es ist ein Fehler der qmake-Konfiguration.
Um es zu beheben dauerhaft müssen Sie die Datei C: \ MyQtDir \ mkspecs \ win32-msvc2008 \ qmake.conf. Für andere Konfigurationen haben Sie ändern win32-msvc2008.
Für mich war es unter C: \ Qt \ 2009.03 \ qt \ mkspecs \ win32-msvc2008 \ qmake.conf
Suche nach dem Begriff "QMAKE_MOC". Sie werden einige Zeilen wie diese finden:
QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
QMAKE_IDC = $$[QT_INSTALL_BINS]\idc.exe
ist QT_INSTALL_BINS ein Weg, der falsch zu sein scheint. Die Verzeichnistrenner sind noch ‚/‘ sollte aber sein ‚\‘. Im Moment weiß ich nicht genau, wo ich QT_INSTALL_BINS ändern. Aber der qt Pfad wird nicht für mich ändern, damit ich das Makro durch harte definierte Pfadnamen ersetzt:
QMAKE_MOC = C:\Qt\2009.03\qt\bin\moc.exe
QMAKE_UIC = C:\Qt\2009.03\qt\bin\uic.exe
QMAKE_IDC = C:\Qt\2009.03\qt\bin\idc.exe
Jetzt gibt es keine Probleme mit dem moc mehr. Rebuilds wird auch funktionieren.
Hope this helps;)
Haben Sie versucht, mit der Compiler / Tools mit Qt enthalten in / mingw / bin? (Auf meinem System ist Qt in C: \ Qt \ 2009.03.) Die letzte Mal habe ich geprüft, die nicht-kommerzielle Verbreitung von Qt wird nicht funktionieren mit Visual Studio. Ich habe gerade versucht, dies aus der Qt-Eingabeaufforderung und es hat funktioniert.
qmake -project "CONFIG += qtestlib"
qmake
mingw32-make
Hope, das hilft.
Ar Sie sicher, dass die moc nicht erzeugt wird? Er lebt in dem Debug-Verzeichnis, so dass Sie entweder zu #include benötigen "Debug / teststring.moc" oder # include mit einer zusätzlichen -IDebug Compiler-Option.
Bei noch mit VC Kompilieren NMake es eine Abhilfe für diesen Fehler ist hier: http://bugreports.qt-project.org/browse/QTBUG-6470