Qt moc не работает при запуске из некоторых мест - PullRequest
0 голосов
/ 17 декабря 2011

У меня есть проект Qt, который я пытаюсь скомпилировать с помощью jom в Windows 7. Я могу скомпилировать его из командной строки, когда источник находится в одном месте. Однако когда я извлекаю исходный код из git в другом месте и пытаюсь скомпилировать его, я получаю следующую ошибку

moc: указано слишком много входных файлов

Это действительно странно, так как в обоих случаях я просто извлекаю данные из одного и того же git-репозитория, и код прекрасно компилируется в одном месте и завершается с ошибкой в ​​другом. Я попробовал nmake и получил те же результаты.

Для сравнения приведем две команды. Первый проваливается, второй преуспевает.

C:\QtSDK\Desktop\Qt\4.7.4\msvc2008\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DSRCDIR=\"C:/Users/Jon Morra/.hudson/jobs/Organizer/workspace/MVSComplete/SshTests/\" -DQT_DLL -DQT_NO_DEBUG -DQT_TESTLIB_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\QtNetwork" -I"c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\QtTest" -I"c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include" -I"..\..\MVSComplete\QtSftpWrapper" -I"c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\ActiveQt" -I"release" -I"..\..\MVSComplete\SshTests" -I"." -I"c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\mkspecs\win32-msvc2008" -D_MSC_VER=1500 -DWIN32 ..\..\MVSComplete\SshTests\tst_sshteststest.cpp -o release\tst_sshteststest.moc
C:\QtSDK\Desktop\Qt\4.7.4\msvc2008\bin\moc.exe -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DSRCDIR=\"C:/MVS/MVSOrganizerQt/MVSComplete/SshTests/\" -DQT_DLL -DQT_NO_DEBUG -DQT_TESTLIB_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I"..\..\..\..\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\QtCore" -I"..\..\..\..\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\QtNetwork" -I"..\..\..\..\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\QtTest" -I"..\..\..\..\QtSDK\Desktop\Qt\4.7.4\msvc2008\include" -I"..\..\MVSComplete\QtSftpWrapper" -I"..\..\..\..\QtSDK\Desktop\Qt\4.7.4\msvc2008\include\ActiveQt" -I"release" -I"..\..\MVSComplete\SshTests" -I"." -I"..\..\..\..\QtSDK\Desktop\Qt\4.7.4\msvc2008\mkspecs\win32-msvc2008" -D_MSC_VER=1500 -DWIN32 ..\..\MVSComplete\SshTests\tst_sshteststest.cpp -o release\tst_sshteststest.moc

Есть идеи, что происходит?

1 Ответ

4 голосов
/ 17 декабря 2011

Я подозреваю, что это потому, что ваш первый путь содержит пробел: "C: / Users / Jon Morra / ..." QMake не очень хорошо обрабатывает пробелы в путях, то есть он не всегда корректно избегает их,и поэтому путь с пробелом интерпретируется как два аргумента вместо одного в некоторой точке.Я рекомендую всегда использовать пути без пробелов для вашего исходного каталога при сборке с помощью Quake.Например, поместите ваши источники в

c:\work\someproject

вместо

C:\Users\John Doe\work\someproject
...