首次尝试编写一个小的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)
答案 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的目标进行后续测试。