从某些位置运行时 Qt moc 不工作
我有一个 Qt 项目,正在尝试在 Windows 7 上使用 jom 进行编译。当源位于一个位置时,我可以从命令行很好地编译它。然而,当我从另一个位置的 git 中提取源代码并尝试编译它时,我收到以下错误
moc: Too much input files specified
这真的很奇怪,因为在这两种情况下我只是从同一个 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
有什么想法吗?
I have a Qt project that I'm trying to compile with jom on Windows 7. I can compile it fine from the command line when the source is in one location. However, when I pull the source from git in another location and try and compile it, I get the following error
moc: Too many input files specified
This is really weird as in both cases I'm just pulling from the same git repository and the code compiles fine in one location and fails in another. I've tried nmake and got the same results.
As a comparison, here are the two commands. The first one fails, the second one succeeds.
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
Any ideas what is going on?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我怀疑这是因为你的第一个路径包含空格:“C:/Users/Jon Morra/...”
QMake 不能很好地处理路径中的空格,即它不能始终正确地转义它们,因此带有空格的路径在某些时候会被解释为两个参数而不是一个参数。我建议在使用 quake 进行构建时始终使用不带空格的源目录路径。例如,将您的来源放入
而不是
I suspect it's because your first path contains a space: "C:/Users/Jon Morra/..."
QMake doesn't handle spaces in paths very well, i.e. it doesn't escape them correctly at all times, and so a path with a space gets interpreted as two arguments instead of one at some point. I recommend to always use paths without spaces for your source dir when building with quake. E.g. put your sources into
instead of