2010-08-17 88 views
1

在建设与GNU工具链中的C++项目,请告诉我〜空白自由路径我的文档

的src/Adapter_FS5HyDE.d:1:***多个目标模式。停止。

搜索,搜索,搜索,我发现,make认为,它有多个目标,因为路径我包括头中有空格。如果您的头文件存储在理智的之类的地方,例如C:\Program Files,那么您可以使用旧的DOS路径(例如C:\PROGRA~1)来处理。但是,当您的标题处于My Documents这样的真正疯狂位置时,您可以利用MY DOC~1解决问题,因为仍然有空间。

任何想法如何告诉我的编译器查看我的文档的标题没有make混淆作为两个对象的路径? (注意:如果你愿意,可以随意在我的文档中放入西红柿头文件,但是这样做的一点理由,我不想这样做,如果解决方案这个问题很简单,我宁愿保持它的方式。)

+4

缩短的名字通常不会有空格。你是否确信'我的DOC〜1'真的是你的'我的文档'文件夹的简称? – 2010-08-17 21:56:20

+0

我的“我的文档”文件夹有一个简短的别名“MYDOCU〜1”。我同意查尔斯贝利 - 一个长文件名的8.3短别名包含一个空格是不寻常的。如果它们包含的空间会打败微软提出这个问题的原因。你的系统发生了一些奇怪的事情。 – 2010-08-17 22:07:58

+1

你可以去“我的文档”目录的父级,做一个“dir/x”命令并将输出(至少相关的行)粘贴到你的问题中? – 2010-08-17 22:10:15

回答

3

您可以通过在命令提示符下执行DIR /X来找出旧路径。

或者,大多数情况下,您可以使用前6个字符 - 空格+ ~1 +扩展名(8.3路径不会有空格)来伪造它。

或者,您可以使用引号:"C:\Documents and Settings\Administrator\My Documents"

1

我不知道做specficially,但解决这个普通的方法就是把引号括住路径即

cd "C:\Program Files\" 

是否有效?

+0

它不在Makefile目标和依赖项中。 – reinierpost 2010-08-18 10:10:34

0

备注:不同操作系统安装时,同一文件夹的短名称(8.3)可能不相同。因此,您不能确定C:\Program Files将永远是C:\PROGRA~1

  • 短名称不能包含空格在他们要么,所以My Documents通常简称为MYDOCU~1,不MY DOC~1
  • 您可以使用​​找到任何文件夹或文件(包括My Documents)的确切短名称。
  • 如果您使用Windows命令行(cmd.exe)中的GNU工具链,则应该能够围绕文件夹/文件名使用引号(")来解决此问题。
0

对于某些文件夹,包括我的文档,您可以指定一个替代位置。为此,请右键单击该文件夹,选择“属性”,选择“位置”选项卡,然后离开。我用它将我的下载和音乐放在另一个驱动器上(D :)。

0

编写包装脚本(例如,批处理文件)将路径名称转换为简写形式。

我有一个脚本“runwin”,这样做的东西 - 而不是,例如, gcc <args>我可以拨打runwin gcc <args>; runwin将启发式猜测哪些参数是文件名路径并将其翻译,然后调用gcc作为结果字符串的参数。