2009-08-29 12 views
5

que estoy tratando de construir el ejemploqtestlib/tutorial1, pero el testqstring.moc archivo no se genera cuando corro nmake (Estoy corriendo Qt 4.5.2 en Windows XP SP3).
copié testqstring.cpp desde el directorio tutorial para mi directorio de construcción (C: \ \ cajas de arena testqstring) y desde la línea de comandos Qt encontré archivo vsvars32.bat de mi MS Visual Studio 8 instalación para agregar el medio ambiente VS variables.
Qt no moc.exe generar archivos * .moc

De acuerdo con el tutorial, debe ejecutar:

> qmake -project "CONFIG += qtestlib" 
> qmake 
> nmake 

Cuando lo haga, la salida de nmake es:

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 "depurar" -I ".... \ Apps \ Qt \ 2009.03 \ qt \ mkspecs \ win32-g ++" -D__GNUC__ - DWIN32 testqstring.cpp -o debug \ testqstring.moc

g ++ -c -g -Wall -frtti -fexceptions -mthreads -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_TESTLIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I" .... \ Aplicaciones \ 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 "depurar" -I ".... \ Apps \ Qt \ 2009.03 \ qt \ mkspecs \ win32-g ++" -o depurar \ testqstring.o testqstring.cpp

testqstring.cpp: 63: 27: testqstring.moc: No existe el fichero o directorio
NMAKE: U1077 error fatal: 'C: \ Apps \ Qt \ 2009.03 \ MinGW \ bin \ g ++. EXE ': código de retorno' 0x1 ' Stop.
NMAKE: error fatal U1077: 'C: \ PROGRA ~ 1 \ MICROS ~ 3 \ VC \ BIN \ nmake.exe': código de retorno '0x2' Stop.

Entonces, veo que se llama a moc.exe para generar debug/testqstring.moc, pero ese archivo nunca se genera.

Gracias por cualquier orientación que pueda proporcionar.

+0

¿Se puede incluir el archivo .pro generados cuando se ejecuta el primer comando? – Ropez

+0

Tuve el mismo problema. Pero lo resolví quitando el archivo qt.conf del directorio /bin. –

Respuesta

4

Parece que está intentando usar nmake para hacer una compilación con MinGW. nmake es una herramienta de MSVC.

Si quiere hacer una compilación con MinGW debe usar mingw32-make.Si quiere hacer una compilación con MSVC, debe usar un Qt construido con MSVC (lo que significa que debe construirlo usted mismo o tener una licencia comercial).

+0

Gracias. Sabía que sería algo simple. mingw32-make funciona bien. –

0

¿Está seguro de que no se genera el moc? Vive en el directorio Debug, por lo que deberá incluir #include "Debug/teststring.moc" o #include con una opción de compilador -IDebug adicional.

+0

Si miras la línea de compilación, puedes ver que ya incluye -I "debug". El usuario no necesita hacer esto explícitamente en el archivo .pro. – rohanpm

1

¿Ha intentado utilizar el compilador/herramientas incluidas con Qt en/mingw/bin? (En mi sistema, Qt está instalado en C: \ Qt \ 2009.03.) La última vez que revisé, la distribución no comercial de Qt no funcionará con Visual Studio. Acabo de probar esto desde el símbolo del sistema de Qt y funcionó.

qmake -project "CONFIG += qtestlib" 

qmake 

mingw32-make 

Espero que esto ayude.

+0

Gracias, mingw32-make hizo el truco. Pensé que solo funcionaría con nmake. El tutorial solo menciona make y nmake. Como tengo MSVC, pensé que nmake era la herramienta adecuada. Obviamente, no fue así. –

2

Tuve el problema de que el moc.exe no generó ningún archivo moc con nmake. La razón era una ruta de acceso moc.exe incorrecta dentro de Makefile.Debug.

Algo así como:

C: /Qt/2009.03/qt/bin \ moc.exe

lo cambio a:

C: \ Qt \ 2009.03 \ qt \ bin \ moc .exe

y ahora funciona. ;)

Desafortunadamente qmake generará los makefiles cada vez que lo ejecute desde el menú o reconstruirá/limpiará la solución/proyecto. Creo que es un error de la configuración de qmake.

Para solucionarlo de forma permanente, debe encontrar el archivo C: \ MyQtDir \ mkspecs \ win32-msvc2008 \ qmake.conf. Para otras configuraciones, debe cambiar win32-msvc2008.

para mí fue en C: \ Qt \ 2009.03 \ qt \ mkspecs \ win32-msvc2008 \ qmake.conf

búsqueda de la "QMAKE_MOC" frase. Encontrará algunas líneas como esta:

QMAKE_MOC    = $$[QT_INSTALL_BINS]\moc.exe 
QMAKE_UIC    = $$[QT_INSTALL_BINS]\uic.exe 
QMAKE_IDC    = $$[QT_INSTALL_BINS]\idc.exe 

QT_INSTALL_BINS es una ruta que parece estar equivocada. Los separadores de directorio siguen siendo '/' pero deberían ser '\'. Por el momento, no sé exactamente dónde tengo que cambiar QT_INSTALL_BINS. Pero el camino qt no va a cambiar para mí así que sustituye la macro mediante rutas de difícil definido:

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 

Ahora no hay problemas con el moc más. Las reconstrucciones también funcionarán bien.

Esperanza esto ayuda;)

+1

Puede actualizar la ruta QT_INSTALL_BINS ejecutando qmake. qmake -set "QT_INSTALL_BINS" "C: \ Qt \ 2009.03 \ qt \ bin" Más información aquí: http://doc.trolltech.com/4.5/qmake-environment-reference.html –

Cuestiones relacionadas