【问题标题】:Makefile clean on windows在 Windows 上清理 Makefile
【发布时间】:2011-06-03 02:20:17
【问题描述】:

我现在正在学习使用 makefile,我制作了以下 makefile(我在 windows 上使用 Visual Studio 命令行编译器)

CC = cl
CFLAG = /EHsc
test_database.exe: composer.obj database.obj test_database.obj
    $(CC) test_database.obj database.obj composer.obj
test_database.obj: test_database.cpp
    $(CC) $(CFLAGS) -c test_database.cpp
composer.obj: composer.cpp composer.h
    $(CC) $(CFLAGS) -c composer.cpp
database.obj: database.cpp database.h
    $(CC) $(CFLAGS) -c database.cpp

.PHONY : clean
clean:
    rm -f *.obj

每当我调用make clean 时,我都会得到make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4ff283) 我不太确定我做错了什么。我可以使用make编译程序没问题我只是在目标清理时得到错误。 rm 存在于我的机器上,并且在我一直使用它的路径上。我已经用DEL 进行了尝试,也出现了相同的错误。任何为我指明正确方向的帮助将不胜感激。

制作版本是GNU Make 3.80

【问题讨论】:

  • 好吧,您似乎正在将 GNU makefile 知识应用于 Nmake,假设您在命令行上使用 make 调用 Nmake,而不是为 Windows 构建 GNU make。您在第 2 行有错字(CFLAG 应该是 CFLAGS),但除此之外,只需删除 Nmake 不支持的 .PHONY 指令并将 rm -f 更改为 del /f /q .
  • make --version 给了我GNU Make 3.80,感谢您注意到错字,但这只是编译器的错误处理选项,与清理无关。我已经用那里的假货完成了它并省略了。
  • 这是什么版本的makemake --version 应该告诉你。 make -p clean 也可能有帮助。
  • @Chrono Kitsune 就是答案 - 发布它 - 它应该被赞成和接受

标签: windows makefile


【解决方案1】:

你的makefile很好,“nmake clean”正确地调用了命令。

您使用的 make 版本不工作。您的选择是使用 Visual Studio 或 Windows SDK 附带的 nmake.exe 实用程序,或者获取可以工作的 make 版本。

【讨论】:

  • 但是我可以使用make 实用程序编译得很好,整个make 没有损坏或不可用,我的问题只是与我make clean 时抛出的错误有关,我只清理时出现此错误。感谢您提供有关使用 nmake 的提示,但我仍然想知道 make clean 失败的原因。
  • 由于 GNU make(作为 msys 的一部分)调用 rm 命令的方式,make clean 似乎失败了。即使 rm 在单独运行时有效,但在从 make 运行时也不起作用。如果您使用 nmake,则 rm 可以工作,但您可能会遇到 nmake 和 make 之间的其他差异,这可能会破坏您的 makefile。
【解决方案2】:

这是 make 中的一个错误,由 PATH 变量中的括号引起。见http://okolovich.info/interruptexception-caught-with-code-0xc00000fd/

【讨论】:

    【解决方案3】:

    最近,我遇到了同样的问题。就我而言,似乎转义星号(即rm -rf \*.obj)解决了这个问题。虽然我的 make 版本有点新:GNU Make 3.81.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      相关资源
      最近更新 更多