qt moc.exe를 생성하지 않습니다 *.moc 파일
문제
나는 그것을 만들려고 노력하고있다 qtestlib/tutorial1 예, 하지만 TestQString.Moc 실행할 때 파일이 생성되지 않습니다 nmake
(Windows XP SP3에서 QT 4.5.2를 실행하고 있습니다).
나는 복사했다 TestQString.cpp 자습서 디렉토리에서 내 빌드 디렉토리 (C : 샌드 박스 testQString) 및 QT 명령 프롬프트에서 RAN VSVARS32.BAT 파일 MS MS Visual Studio 8 설치 VS 환경 변수를 추가합니다.
튜토리얼에 따르면, 나는 실행해야한다.
> qmake -project "CONFIG += qtestlib"
> qmake
> nmake
내가 할 때, 출력 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 " qt qt" -i ".... apps qt 2009.03 qt include qtgui"-i ".... apps qt 2009.03 qt include qttest"-i ".... apps QT 2009.03 qt "-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 ".... ..... qt "-i"포함. " -i ".... apps qt 2009.03 qt include activeQt"-i "debug"-i ".... apps qt 2009.03 qt mkspecs win32 -g ++"-o 디버그 testQString.o TestQString.cpp
TestQString.cpp : 63 : 27 : TestQString.Moc : 그러한 파일 또는 디렉토리가 없음
nmake : 치명적인 오류 U1077 : 'c : apps qt 2009.03 mingw bin g ++. exe': 코드 '0x1'정지를 반환합니다.
nmake : 치명적인 오류 U1077 : 'c : progra ~ 1 micros ~ 3 vc bin nmake.exe': 코드 '0x2'정지를 반환합니다.
따라서 Moc.exe가 Debug/TestQString.moc를 생성하기 위해 호출되고 있음을 알 수 있지만 해당 파일은 생성되지 않습니다.
제공 할 수있는 모든 지침에 감사드립니다.
해결책
당신이 사용하려고하는 것처럼 보입니다 nmake
Mingw와 함께 빌드를합니다. nmake
MSVC 도구입니다.
mingw와 함께 빌드를하고 싶다면 사용해야합니다. mingw32-make
. MSVC로 빌드를하려면 MSVC로 구축 된 QT를 사용해야합니다 (즉, 직접 구축하거나 상용 라이센스가 있어야 함).
다른 팁
나는 moc.exe가 nmake와 함께 moc 파일을 생성하지 않았다는 문제가있었습니다. 그 이유는 makefile.debug 내부의 잘못된 moc.exe 경로였습니다.
같은 것 :
C : /QT/2009.03/qt/bin moc.exe
나는 그것을 다음으로 변경한다 :
C : qt 2009.03 Qt bin moc.exe
그리고 지금 그것은 작동합니다. ;)
불행히도 Qmake는 메뉴에서 실행하거나 솔루션/프로젝트를 재구성/청소할 때마다 MakeFiles를 생성합니다. Qmake 구성의 버그라고 생각합니다.
영구적으로 수정하려면 파일 C : myqtdir mkspecs win32-msvc2008 qmake.conf를 찾아야합니다. 다른 구성의 경우 Win32-MSVC2008을 변경해야합니다.
나를 위해 그것은 c : qt 2009.03 qt mkspecs win32-msvc2008 qmake.conf에있었습니다.
"qmake_moc"라는 문구를 검색하십시오. 다음과 같은 줄을 찾을 수 있습니다.
QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
QMAKE_IDC = $$[QT_INSTALL_BINS]\idc.exe
qt_install_bins는 잘못된 것처럼 보이는 경로입니다. 디렉토리 분리기는 여전히 '/'이지만 ''여야합니다. 현재 나는 qt_install_bins를 어디로 변경 해야하는지 정확히 모른다. 그러나 QT 경로는 나에게 변경되지 않으므로 매크로를 하드 정의 된 PathNames로 교체했습니다.
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
이제 MOC에는 더 이상 문제가 없습니다. 재건도 잘 작동합니다.
도움이 되었기를 바랍니다 ;)
QT IN/MINGW/BIN에 포함 된 컴파일러/도구를 사용해 보셨습니까? (내 시스템에서 QT는 C : QT 2009.03에 설치됩니다.) 지난번에 확인했을 때 QT의 비상업적 배포는 Visual Studio에서 작동하지 않습니다. 방금 QT 명령 프롬프트에서 이것을 시도해 보았습니다.
qmake -project "CONFIG += qtestlib"
qmake
mingw32-make
도움이 되었기를 바랍니다.
MOC가 생성되지 않았다고 확신합니까? 디버그 디렉토리에 살고 있으므로 #include "debug/teststring.moc"또는 추가 -idebug 컴파일러 옵션을 사용하여 #include가 필요합니다.
VC NMake와 아직 컴파일하는 경우이 버그에 대한 해결 방법이 있습니다.http://bugreports.qt-project.org/browse/qtbug-6470