我正在学习使用makefiles现在我做了下面的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
makefile文件很好,“nmake clean”正确地调用了这个命令。
使您正在使用的版本不起作用。 您的选择是使用Visual Studio或Windows SDK附带的nmake.exe实用程序,或者获取可用的make版本。
这是make中的一个bug,由PATH变量中的缺陷引起。 见http://okolovich.info/interruptexception-caught-with-code-0xc00000fd/
最近,我面临同样的问题。 在我看来,转义星号(即rm -rf \*.obj
)解决了这个问题。 虽然我的制作版本有点新: GNU Make 3.81
。