mingw make无法处理路径中的空格?

ola*_*ndo 9 windows mingw makefile

我正在尝试编译代码,使用qmake创建的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
Run Code Online (Sandbox Code Playgroud)

由于错误,mingw32-make似乎不理解其中包含空格的路径.真的吗?有办法解决吗?

Ale*_*sky 8

在Linux/UNIX中执行此操作的常用方法是使用反斜杠转义每个空格,例如:/c/Documents\ and\ Settings/User但是,这在MinGW中并不总是有效.

因此,请使用短(8.3)名称.您使用Windows(不MinGW的)命令获取短名字for %I in (<PATH>) do @echo %~sI在那里<PATH>可以.(显示当前目录,如PWD), *(在当前目录列表文件),一个特定的文件路径,等等.

顺便说一下,要从糟糕的cmd.exe窗口中复制,请单击标题栏左上角的图标,转到"属性","选项",然后启用"快速编辑模式".然后,您可以使用鼠标选择文本.Enter键(或菜单>编辑>复制)将文本复制到剪贴板.插入键(或菜单>编辑>粘贴)粘贴它.


pax*_*blo 7

MinGW"入门"指南:

MinGW可能存在包含空格的路径问题,如果没有,通常与MinGW一起使用的其他程序将遇到此类路径的问题.因此,我们强烈建议您不要在路径名称引用中带有空格的任何位置安装MinGW; 即你应该避免安装到"程序文件"或"我的文档"等任何子目录中.

我怀疑在运行可执行文件时发现的同样问题也会与其他文件一起显示出来.您可以尝试将整个事物(文件规范)包装在双引号内,这可能有效,但Windows有时不像这个区域中基于UNIX的shell那样合乎逻辑.


文件名中的空格无论如何都是邪恶的:-)

  • 空间不是邪恶的.无法处理它们的环境是邪恶的. (33认同)

zet*_*eta 7

不确定这是否有用(担心被低估),但我创建了一个语义链接以避免带空格的路径.不确定它是否会解决问题,因为在我的场景中,在我使用了与pthreads相关的语义链接之后,我仍然无法解决这个错误.

使用命令提示符创建语义链接:

mklink /j "C:\newshortcut" "C:\Program Files\Directory with spaces"
Run Code Online (Sandbox Code Playgroud)

然后在您要运行的命令上,使用C:\newshortcut