如何在每次构建时停止make clean?

时间:2017-03-27 12:14:50

标签: makefile

首次尝试编写一个小的Makefile,但遇到问题 - 如何在每次构建后停止执行make clean?

TASS64=64tass
EXOMIZER=exomizer
EXOMIZERFLAGS=sfx basic -n
VICE=/Applications/VICE/x64.app/Contents/MacOS/x64
VICEFLAGS=-sidenginemodel 1803 -keybuf "\88"
SOURCES=$(wildcard *.asm)
OBJECTS=$(SOURCES:.asm=.prg)

.PRECIOUS=Calvin.prg

all: $(TARGETS)

%.prg: %.asm
    $(TASS64) -C -a -o $@ -i $<

%: %.prg
    $(VICE) $(VICEFLAGS) $<

.PHONY: clean
clean:
    rm $(OBJECTS)

2 个答案:

答案 0 :(得分:1)

我猜,它不执行&#39; make clean&#39;。但是,可能发生的是中间(次要)结果被删除。 GNU Make默认情况下会这样做。为防止make这样做,请在

中提及这些中间结果X1, X2, ...
 .SECONDARY: X1 X2 ...

或者,为了保留任何次要结果,只需输入:

 .SECONDARY:

没有任何具体目标。

答案 1 :(得分:0)

因此,如果存在构建问题,则默认的Make行为是删除输出。虽然在这种情况下它正确构建,然后我的makefile在VICE(c64模拟器)中启动PRG文件。它运行正常,所以我退出了模拟器。

退出操作返回一个退出代码,将Make视为不成功的构建,从而删除输出PRG

这是基于这个线程 - Why does GNU make delete a file - 并通过删除启动VICE的目标进行后续测试。