2009-08-29 10 views
5

Próbuję zbudować qtestlib/tutorial1 przykład, ale testqstring.moc plik nie jest generowany, gdy biegnę nmake (Używam Qt 4.5.2 w Windows XP SP3).
skopiowane testqstring.cpp z katalogu samouczka do mojego katalogu build (C: \ Piaskownice \ testqstring) oraz z poziomu wiersza poleceń Qt prowadził vsvars32.bat plik z mojego MS Visual Studio 8 instalację do dodawania środowisko VS zmienne.Qt nie moc.exe generowania pliku * .moc

Zgodnie z samouczka, należy uruchomić:

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

Kiedy zrobić, wyjście z nmake jest:

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 ".... \ Aplikacje \ Qt \ 2009.03 \ qt \ include \ QtGui "-I" .... \ Apps \ Qt \ 2009.03 \ qt \ include \ QtTest "-I" .... \ Aplikacje \ Qt \ 2009.03 \ qt \ include "-I". " -I ".... \ Apps \ Qt \ 2009.03 \ qt \ include \ ActiveQt" -I "debugowanie" -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”.... \ Aplikacje \ Qt \ 2009.03 \ qt \ include \ QtCore "-I" .... \ Aplikacje \ Qt \ 2009.03 \ qt \ include \ QtGui "-I" .... \ Aplikacje \ Qt \ 2009.03 \ qt \ include \ QtTest "-I" .... \ Apps \ Qt \ 2009.03 \ qt \ include "-I". " -I ".... \ Apps \ Qt \ 2009.03 \ qt \ include \ ActiveQt" -I "debugowanie" -I ".... \ Apps \ Qt \ 2009.03 \ qt \ mkspecs \ win32-g ++" -o debugowanie \ testqstring.o testqstring.cpp

testqstring.cpp: 63: 27: testqstring.moc: Nie ma takiego pliku lub katalogu
NMAKE: błąd krytyczny U1077: „C: \ Apps \ Qt \ 2009.03 \ MinGW \ bin \ g ++. EXE ': kod powrotu' 0x1 ' Stop.
NMAKE: błąd krytyczny U1077: "C: \ PROGRA ~ 1 \ MICROS ~ 3 \ VC \ BIN \ nmake.exe": kod powrotu "0x2" Stop.

Widzę więc, że moc.exe jest wywoływana w celu wygenerowania debug/testqstring.moc, ale ten plik nigdy nie jest generowany.

Dziękuję za wszelkie wskazówki, które możesz podać.

+0

można dołączyć plik .pro generowanego podczas uruchamiania pierwszego polecenia? – Ropez

+0

Miałem ten sam problem. Ale rozwiązałem go, usuwając plik qt.conf z katalogu /bin. –

Odpowiedz

4

Wygląda na to, że próbujesz użyć nmake, aby wykonać kompilację z MinGW. nmake to narzędzie MSVC.

Jeśli chcesz wykonać kompilację z MinGW, musisz użyć mingw32-make.Jeśli chcesz wykonać kompilację z MSVC, musisz użyć Qt zbudowanego z MSVC (co oznacza, że ​​musisz zbudować go samodzielnie lub mieć komercyjną licencję).

+0

Dzięki. Wiedziałem, że to będzie coś prostego. mingw32-make działa dobrze. –

0

Jesteś pewien, że moc nie jest generowany? Plik ten znajduje się w katalogu debugowania, więc musisz albo # dołączyć "Debugowanie/teststring.moc", albo #include z dodatkową opcją kompilatora -Ubug.

+0

Jeśli spojrzysz na linię kompilacji, zobaczysz, że zawiera ona już -I "debugowanie". Użytkownik nie musi jawnie robić tego w pliku .pro. – rohanpm

1

Czy próbowałeś użyć kompilatora/narzędzi dołączonych do Qt w/mingw/bin? (W moim systemie Qt jest zainstalowany w C: \ Qt \ 2009.03.) Ostatnim razem, gdy sprawdziłem, niekomercyjna dystrybucja Qt nie będzie działać z Visual Studio. Po prostu próbowałem tego z wiersza polecenia Qt i działało.

qmake -project "CONFIG += qtestlib" 

qmake 

mingw32-make 

Mam nadzieję, że to pomoże.

+0

Dzięki, mingw32-make załatwił sprawę. Myślałem, że to po prostu zadziała z nmake. Samouczek wspomniany tylko make i nmake. Ponieważ mam MSVC, pomyślałem, że nmake jest właściwym narzędziem. Oczywiście, nie było. –

2

Miałem problem z tym, że moc.exe nie wygenerował żadnych plików mocy z nmake. Powodem była niewłaściwa ścieżka moc.exe wewnątrz pliku Makefile.Debug.

Coś jak:

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

zmienić go na adres:

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

i teraz działa. ;)

Niefortunnie qmake wygeneruje pliki Makefile za każdym razem, gdy uruchomisz je z menu lub przebudujesz/wyczyścisz rozwiązanie/projekt. Myślę, że to błąd konfiguracji qmake.

Aby to naprawić na stałe, musisz znaleźć plik C: \ MyQtDir \ mkspecs \ win32-msvc2008 \ qmake.conf. W przypadku innych konfiguracji musisz zmienić win32-msvc2008.

Dla mnie było to w C: \ Qt \ 2009.03 \ qt \ mkspecs \ win32-msvc2008 \ qmake.conf

wyszukiwania dla tagu "QMAKE_MOC". Znajdziesz niektóre linie takie jak to:

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

QT_INSTALL_BINS to droga, która wydaje się być błędne. Separatory katalogu są nadal "/", ale powinny być "\". W tej chwili nie wiem dokładnie, gdzie muszę zmienić QT_INSTALL_BINS. Ale qt ścieżka nie zmieni się dla mnie, więc zastąpione przez twarde makra zdefiniowane ścieżek:

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 

Teraz nie ma problemów z MOC więcej. Przebudowy też będą działać dobrze.

Nadzieja to pomaga;)

+1

Możesz zaktualizować ścieżkę QT_INSTALL_BINS, uruchamiając qmake. qmake -set "QT_INSTALL_BINS" "C: \ Qt \ 2009.03 \ qt \ bin" Więcej informacji tutaj: http://doc.trolltech.com/4.5/qmake-environment-reference.html –