为什么我的Makefile不删除中间文件?

时间:2018-04-17 06:58:30

标签: makefile gnu-make

我正在尝试使用GNU make进行一些文本处理。

plotsource: memo.md
    split memo.md -l8
    cat xac | awk '/[0-9].*/{print $$1" "$$6}' > heapsort
    cat xab | awk '/[0-9].*/{print $$1" "$$6}' > downheat
    cat xaa | awk '/[0-9].*/{print $$1" "$$6}' > upheat
    join upheat downheat | join - heapsort > plotsource

我预计中间文件,xac,heapsort等将被删除,但即使在执行后也存在。

为什么要住?如何在创建plotsource后设置删除它们?

我尝试了@reinierpost的答案,但它也没有删除它们。

img

2 个答案:

答案 0 :(得分:1)

作为@red-cricket's comment,似乎只会自动删除特殊类型的文件。

.INTERMEDIATE标志可以将随机文件明确指定为中间名。

https://www.gnu.org/software/make/manual/html_node/Chained-Rules.html

谢谢!

答案 1 :(得分:0)

正如用户657267所说,为了实现这一点,请向make解释这些是中间文件。

plotsource: memo.md

xac xab xaa: memo.md
      split $< -l8

heapsort: xaa
    awk '/[0-9].*/{print $$1" "$$6}' $< > $@

downheat: xab
    awk '/[0-9].*/{print $$1" "$$6}' $< > $@

upheat: xac
    awk '/[0-9].*/{print $$1" "$$6}' $< > $@

plotsource: upheat downbeat heapsort
    join upheat downheat | join - heapsort > $@