我正在尝试编译代码,使用qmake创build的makefile。 当我运行mingw32-make时出现以下错误:
cd bzip2-1.0.5\ && c:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\qmake.exe c:\Documents an d Settings\user\My Documents\Visual Studio 2010\Projects\meshlab\meshlab\meshla b\src\external\bzip2-1.0.5\bzip2-1.0.5.pro -o Makefile Cannot find file: c:\Documents. Cannot find file: and. Cannot find file: Settings\user\My. Cannot find file: Documents\Visual. Cannot find file: Studio. Cannot find file: 2010\Projects\meshlab\meshlab\meshlab\src\external\bzip2-1.0.5 \bzip2-1.0.5.pro. mingw32-make: *** [bzip2-1.0.5\Makefile] Error 2
由于错误,似乎mingw32-make不理解在其中有空格的path。 真的吗? 有没有办法解决它?
从MinGW的“开始”指南 :
MinGW可能在包含空格的路径上存在问题,如果不是,通常与MinGW一起使用的其他程序将遇到这种路径的问题。 因此,我们强烈建议您不要将MinGW安装在路径名称引用中有空格的任何位置; 即您应避免安装到“程序文件”或“我的文档”等的任何子目录中。
我怀疑在运行可执行文件中发现的相同问题也会在其他文件中出现。 你可以尝试用双引号把整个东西(文件规范)包装起来,这可能会起作用,但是Windows在这方面有时不像基于UNIX的shell那么合理。
无论如何,文件名中的空格是邪恶的:-)
在Linux / UNIX中常见的做法是使用反斜杠来转义每个空间,如: /c/Documents\ and\ Settings/User
但是,这在MinGW中并不总是起作用。
所以,使用简短的(8.3)名称。 您可以for %I in (<PATH>) do @echo %~sI
中使用Windows(而不是MinGW)命令获取短名称,其中<PATH>
可以是.
(显示当前目录,如pwd), *
(列出当前目录中的文件),一个特定的文件路径等
顺便说一句,从可怕的cmd.exe窗口复制,单击标题栏左上角的图标,转到属性,选项,并启用快速编辑模式。 然后你可以用鼠标选择文本。 Enter键(或菜单>编辑>复制)将文本复制到剪贴板。 插入键(或菜单>编辑>粘贴)将其粘贴。
不知道这是否有帮助(害怕被低估),但我创建了一个语义链接,以避免带有空格的路径。 不知道是否会解决这个问题,因为在我的情况下,在我使用了pthreads的语义链接之后,它显示了一个不同的错误,我仍然无法修复。
使用命令提示符创建语义链接:
mklink /j "C:\newshortcut" "C:\Program Files\Directory with spaces"
然后在你想运行的命令上使用C:\ newshortcut