在使用GNU工具链构建C ++项目时,make告诉我〜
src / Adapter_FS5HyDE.d:1:***多个目标模式。停止。
搜索,搜索,搜索,我发现make
认为它有多个目标,因为我所包含的标题的路径中包含空格。如果您已将标头存储在C:\Program Files
之类的 sane 位置,则可以使用旧的DOS路径(例如C:\PROGRA~1
)来处理此问题。但是,当您将标题放在像My Documents
这样真正疯狂的地方时,您可以通过MY DOC~1
解决问题,因为还有空格。
知道如何告诉我的编译器在My Documents中查找没有make
标题的标题会将路径混为两个对象吗?
(注意:如果您愿意的话,请随意向我扔西红柿,以便将头文件放入我的文档中,但是 有一些理由来做这些我不想解释如果这个问题的解决方案很容易,我宁愿保持原样。)
答案 0 :(得分:3)
您可以在命令提示符中执行DIR /X
,找出旧路径。
或者,大多数时候你可以用前6个字符伪造它 - 空格+ ~1
+扩展名(8.3路径没有空格)。
或者,您可以使用引号:"C:\Documents and Settings\Administrator\My Documents"
。
答案 1 :(得分:1)
我不知道具体是什么,但通常的方法是在路径上加上引号,即
cd "C:\Program Files\"
有效吗?
答案 2 :(得分:0)
旁注:在不同的操作系统安装中,同一文件夹的短名称(8.3)可能不同。因此,您无法确定C:\Program Files
始终是C:\PROGRA~1
。
My Documents
的通常短名称为MYDOCU~1
,而不是MY DOC~1
。 My Documents
找到任何文件夹或文件(包括dir /x <filename>
)的确切短名称。 cmd.exe
)中的GNU工具链,则应该能够在文件夹/文件名周围使用引号("
)来解决此问题。 答案 3 :(得分:0)
对于某些文件夹,包括“我的文档”,您可以指定其他位置。要执行此操作,请右键单击该文件夹,选择“属性”,选择“位置”选项卡,然后离开。我使用它将我的下载和音乐放在另一个驱动器上(D :)。
答案 4 :(得分:0)
编写包装器脚本(例如,批处理文件)以将路径名转换为简短形式。
我有一个脚本“runwin”可以做这样的事情 - 而不是像gcc <args>
我可以致电runwin gcc <args>
;
runwin将对哪些参数是文件名路径进行启发式猜测并翻译它们,然后在生成的参数字符串上调用gcc。