问题描述
makefile内容如下:
objects = Dynamics.o test.o
tt: $(objects)
g++ $(objects) -o tt
test.o: test.cpp
g++ -c test.cpp
Dynamics.o: ../Dynamics/Dynamics.cpp ../Dynamics/Dynamics.h
g++ -c ../Dynamics/Dynamics.cpp
.PHONY: clean # 声明clean是一个伪目标
clean:
rm $(objects)
执行后无法删除中间文件,执行make clean
命令,报如下错误:
» make clean
rm Dynamics.o test.o
process_begin: CreateProcess(NULL, rm Dynamics.o test.o, …) failed.
make (e=2):
Makefile:13: recipe for target ‘clean’ failed
make: *** [clean] Error 2
解决方案
- windows下要想在Makefile中通过命令行删除中间文件,需要将
rm
替换为del
- 如果不想在编译完后用
make clean
命令清除,可在Makefile文件头部添加all
目标,并添加删除命令,代码如下:objects = Dynamics.o test.o all: $(objects) del $(objects) tt: $(objects) g++ $(objects) -o tt test.o: test.cpp g++ -c test.cpp Dynamics.o: ../Dynamics/Dynamics.cpp ../Dynamics/Dynamics.h g++ -c ../Dynamics/Dynamics.cpp .PHONY: clean # 声明clean是一个伪目标 clean: del $(objects)