windows下Makefile无法删除中间文件的解决方案

本文档描述了在Windows环境下使用Makefile时遇到的无法删除中间文件(.o文件)的问题。错误提示为`rm命令失败,错误代码2`。解决方案是将Makefile中的`rm`替换为Windows系统下的`del`命令。此外,还提供了一种在编译完成后立即删除中间文件的方法,即在Makefile中添加`all`目标并包含删除命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

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)
    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值