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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top