【发布时间】:2016-04-04 12:58:46
【问题描述】:
我有一个无法解决的问题。我有一个最小的示例 makefile,它应该将一个非常简单的 .c 文件编译成可执行程序。
当我运行 make 时,编译器开始编译,然后产生错误消息
"T:\printOffsets.c:10:21: 错误: bootIfc.h: 没有这样的文件或 目录”
然后我复制完全相同的命令行 make 用于构建目标并直接在同一个 Windows 命令 shell 实例中运行它,突然编译成功而没有错误!命令行是(简化的路径名):
T:\perl\c\bin\gcc.exe T:\printOffsets.c -IT:\include\ -o D:\printOffsets.exe
我怎么知道?好吧,make 会在执行命令行之前打印它,所以我只需从 shell 复制和粘贴。
我不明白!这怎么可能??如果从 Makefile 中启动,完全相同的命令如何在 shell 上运行并失败??
顺便说一下,我在 Windows 7 上使用 GNU Make 3.82。
【问题讨论】:
-
您可以尝试使用斜杠而不是反斜杠吗?我相信我有时会遇到同样的问题,在某些情况下使用斜杠会更好。
-
另外,也许 Make 没有使用你认为的 shell,你可以在你的 makefile 中添加一个目标来启动 echo $(SHELL) 吗?
-
@jdarthenay 你完全正确!!它使用的是 sh.exe,而不是 Windows 命令外壳!并用正斜杠替换所有反斜杠解决了这个问题!您能否发表您的评论作为答案,以便我接受/投票?