Qt non moc.exe generare file * .moc
Domanda
Sto cercando di costruire il qtestlib / tutorial1 esempio , ma il testqstring.moc Qt file non è viene generato quando corro nmake
(sto correndo 4.5.2 su Windows XP SP3).
Ho copiato testqstring.cpp dalla directory tutorial per la mia directory di costruzione ( C: \ sandbox \ testqstring ) e dal prompt dei comandi Qt corse di file vsvars32.bat dal mio MS Visual Studio 8 di installazione per aggiungere le variabili di ambiente VS.
Secondo il tutorial, dovrei correre:
> qmake -project "CONFIG += qtestlib"
> qmake
> nmake
Quando faccio, l'uscita dal nmake
è:
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 ++" debug -o \ testqstring.o testqstring.cpp
testqstring.cpp: 63: 27: testqstring.moc: No such file or directory
NMAKE: Errore irreversibile U1077: 'C: \ Apps \ Qt \ 2009.03 \ mingw \ bin \ g ++ EXE.': Codice di ritorno '0x1' Stop.
NMAKE: Errore irreversibile U1077: 'C: \ PROGRA ~ 1 \ MICROS ~ 3 \ VC \ BIN \ Nmake.exe': codice di ritorno '0x2' Stop.
Quindi, posso vedere che moc.exe è chiamata a generare debug / testqstring.moc, ma il file non viene mai generato.
Grazie per ogni e qualsiasi guida è possibile fornire.
Soluzione
Sembra che si sta cercando di usare nmake
per fare una build con MinGW. nmake
è uno strumento MSVC.
Se si vuole fare una build con MinGW è necessario utilizzare mingw32-make
. Se si vuole fare una build con MSVC è necessario utilizzare un Qt costruito con MSVC (il che significa che si deve costruire da soli o avere una licenza commerciale).
Altri suggerimenti
ho avuto il problema che il moc.exe non ha generato alcun moc-file con NMAKE. Il motivo è stato un percorso moc.exe sbagliata all'interno della Makefile.Debug.
Qualcosa di simile:
C: /Qt/2009.03/qt/bin \ moc.exe
lo cambio a:
C: \ Qt \ 2009.03 \ qt \ bin \ moc.exe
ed ora funziona. ;)
Unfortunally qmake genera i makefile ogni volta che eseguirlo dal menu o ricostruire / pulire la soluzione / progetto. Penso che sia un errore di configurazione qmake.
Per risolvere il problema in modo permanente è necessario trovare il file C: \ MyQtDir \ mkspecs \ win32-msvc2008 \ qmake.conf. Per le altre configurazioni è necessario cambiare win32-msvc2008.
Per me è stato in C: \ Qt \ 2009.03 \ qt \ mkspecs \ win32-msvc2008 \ qmake.conf
Cerca la frase "QMAKE_MOC". Troverete alcune linee come questa:
QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
QMAKE_IDC = $$[QT_INSTALL_BINS]\idc.exe
QT_INSTALL_BINS è un percorso che sembra essere sbagliato. I separatori di directory sono ancora '/' ma dovrebbe essere '\'. Al momento non so esattamente dove devo cambiare QT_INSTALL_BINS. Ma il percorso qt non cambierà per me, così ho sostituito la macro da percorsi difficili definito:
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
Ora non ci sono problemi con la moc più. Ricostruisce funzionerà bene anche.
Spero che questo aiuti;)
Hai provato a usare il compilatore / strumenti inclusi con Qt in / MinGW / bin? (Sul mio sistema, Qt è installato in C:. \ Qt \ 2009.03) L'ultima volta che ho controllato, la distribuzione non commerciale di Qt non funzionerà con Visual Studio. Ho appena provato questo dal prompt dei comandi Qt e ha funzionato.
qmake -project "CONFIG += qtestlib"
qmake
mingw32-make
Spero che questo aiuti.
Ar si che la moc non viene generato? Vive nella directory di debug, quindi sarà sia bisogno di # include "Debug / teststring.moc" o # include con un'opzione aggiuntiva -IDebug compilatore.
In caso di compilazione con ancora VC NMAKE c'è una soluzione per questo bug qui: http://bugreports.qt-project.org/browse/QTBUG-6470