Pergunta

Estou tentando construir o exemplo qtestlib/tutorial1, mas o testeqstring.moc arquivo não está sendo gerado quando executo nmake (Estou executando o Qt 4.5.2 no Windows XP SP3).
eu copiei testeqstring.cpp do diretório tutorial para meu diretório build (C:\sandboxes estqstring) e no prompt de comando do Qt executei o arquivo vsvars32.bat da minha instalação do MS Visual Studio 8 para adicionar as variáveis ​​de ambiente do VS.

De acordo com o tutorial, devo executar:

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

Quando eu faço isso, a saída de nmake é:

C:/Apps/Qt/2009.03/qt/binmoc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_TESTLIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"....AppsQt2009.03qtincludeQtCore" -I ".... apps qt 2009.03 qt incluir qtgui" -i ".... apps qt 2009.03 qt incluir qttest" -i ".... apps Qt 2009.03 qt inclua "-i". " -I ".... APPS QT 2009.03 qt incluir 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_thtrous Qtcore "-i" .... apps qt 2009.03 qt incluir qtgui "-i" .... apps qt 2009.03 qt incluir qttest "-i" .... apps qt 2009.03 qt inclua "-i". " -I ".... apps qt 2009.03 qt incluir Activeqt" -i "Debug" -i ".... apps qt 2009.03 qt mkspecs win32 -g ++" -o Debury testqstring.o testqstring.cpp

testeqstring.cpp:63:27:testeqstring.moc:Não existe tal arquivo ou diretório
NMAKE:erro fatal U1077:'C:\Apps\Qt\2009.03\mingw\bin\g++.EXE' :Código de retorno '0x1' pare.
NMAKE:erro fatal U1077:'C:\PROGRA~1\MICROS~3\VC\BIN make.exe' :Código de retorno '0x2' pare.

Então, posso ver que moc.exe está sendo chamado para gerar debug/testqstring.moc, mas esse arquivo nunca é gerado.

Obrigado por toda e qualquer orientação que você possa fornecer.

Foi útil?

Solução

Parece que você está tentando usar nmake para fazer uma compilação com MinGW. nmake é uma ferramenta MSVC.

Se você quiser fazer uma compilação com MinGW você deve usar mingw32-make.Se você quiser fazer uma compilação com MSVC você deve usar um Qt construído com MSVC (o que significa que você mesmo deve compilá-lo ou ter uma licença comercial).

Outras dicas

Eu tive o problema de que o moc.exe não gerou nenhum arquivo moc com o nmake.O motivo foi um caminho moc.exe errado dentro do Makefile.Debug.

Algo como:

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

Eu mudo para:

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

e agora funciona.;)

Infelizmente, o qmake irá gerar os makefiles toda vez que você executá-lo no menu ou reconstruir/limpar a solução/projeto.Acho que é um bug da configuração do qmake.

Para corrigi-lo permanentemente você deve encontrar o arquivo C:\MyQtDir\mkspecs\win32-msvc2008\qmake.conf.Para outras configurações você deve alterar win32-msvc2008.

Para mim estava em C:\Qt\2009.03\qt\mkspecs\win32-msvc2008\qmake.conf

Procure a frase "QMAKE_MOC".Você encontrará algumas linhas 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 é um caminho que parece estar errado.Os separadores de diretório ainda são '/', mas deveriam ser '\'.No momento não sei exatamente onde devo alterar o QT_INSTALL_BINS.Mas o caminho qt não mudará para mim, então substituí a macro por nomes de caminho definidos:

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

Agora não há mais problemas com o moc.As reconstruções também funcionarão bem.

Espero que isto ajude ;)

Você já tentou usar o compilador/ferramentas incluídas no Qt em/mingw/bin?(No meu sistema, o Qt está instalado em C:\Qt\2009.03.) Da última vez que verifiquei, a distribuição não comercial do Qt não funcionará com o Visual Studio.Eu apenas tentei isso no prompt de comando do Qt e funcionou.

qmake -project "CONFIG += qtestlib"

qmake

mingw32-make

Espero que isto ajude.

Tem certeza de que o moc não foi gerado?Ele fica no diretório Debug, então você precisará #include "Debug/teststring.moc" ou #include com uma opção adicional do compilador -IDebug.

No caso de ainda compilar com VC nmake, há uma solução alternativa para esse bug aqui:http://bugreports.qt-project.org/browse/QTBUG-6470

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top