Makefile中如何正确删除文件名包含$符号的文件
问题原因
Makefile 中$是用于变量引用的特殊保留字符,你编写的ch2$Node.class里的$N会被Makefile识别为读取名为N的变量,当N未定义时会被替换为空值,因此实际执行的命令里$直接丢失,变成ch2Node.class。单反斜杠转义仅对shell生效,不会被Makefile的变量解析阶段识别,因此无效。
解决方案
- 方案一:使用两个
$完成转义,Makefile语法中$$会被解析为单个普通$字符,修改后的规则如下:
clean: rm -f ch2$$Node.class
- 方案二:额外用单引号包裹文件名,避免shell层面也触发变量展开,兼容性更强:
clean: rm -f 'ch2$$Node.class'
内容的提问来源于stack exchange,提问作者RichS
相关产品推荐
相关产品推荐

