从某些位置运行时,Qt moc不工作

从某些位置运行时,Qt moc不工作,qt,moc,Qt,Moc,我有一个Qt项目,我正试图用jom在Windows7上编译它。当源代码位于一个位置时,我可以从命令行很好地编译它。然而,当我从另一个位置的git中提取源代码并尝试编译它时,我得到了以下错误 moc:指定的输入文件太多 这真的很奇怪,因为在这两种情况下,我只是从同一个git存储库中提取代码,代码在一个位置编译得很好,而在另一个位置编译失败。我试过nmake,也得到了同样的结果 作为比较,下面是两个命令。第一个失败,第二个成功 C:\QtSDK\Desktop\Qt\4.7.4\msvc2008\b

我有一个Qt项目,我正试图用jom在Windows7上编译它。当源代码位于一个位置时,我可以从命令行很好地编译它。然而,当我从另一个位置的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

有什么想法吗?

我怀疑这是因为您的第一条路径包含一个空格:“C:/Users/Jon Morra/…” QMake不能很好地处理路径中的空格,也就是说,它不能始终正确地转义它们,因此带有空格的路径在某一点上被解释为两个参数,而不是一个参数。我建议在使用quake构建时,始终使用没有空格的路径作为源目录。例如,把你的消息来源放入

c:\work\someproject
而不是

C:\Users\John Doe\work\someproject

我怀疑这是因为您的第一条路径包含一个空格:“C:/Users/Jon Morra/…” QMake不能很好地处理路径中的空格,也就是说,它不能始终正确地转义它们,因此带有空格的路径在某一点上被解释为两个参数,而不是一个参数。我建议在使用quake构建时,始终使用没有空格的路径作为源目录。例如,把你的消息来源放入

c:\work\someproject
而不是

C:\Users\John Doe\work\someproject