我正在学习如何使用makefiles并且我制作了以下makefile(我使用visual studio命令行编译器在Windows上)
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
答案 0 :(得分:2)
你有的makefile很好,“nmake clean”正确调用命令。
您正在使用的版本无效。您可以选择使用Visual Studio或Windows SDK附带的nmake.exe实用程序,或者获取适用的make版本。
答案 1 :(得分:2)
这是男性的一个错误,由PATH变量中的括号引起。见http://okolovich.info/interruptexception-caught-with-code-0xc00000fd/
答案 2 :(得分:1)
最近,我遇到了同样的问题。在我的情况下,似乎逃避星号(即rm -rf \*.obj
)解决了这个问题。虽然我的make版本有点新:GNU Make 3.81
。