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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top