Makefile:
OUTPUT_ILA = "path/file"
all: syn ila opt ...
$(OUTPUT_SYN): $(INPUT_SYN)
@echo "syn"
...
$(OUTPUT_ILA): $(OUTPUT_SYN)
@echo "ila"
...
$(OUTPUT_OPT): $(INPUT_OPT)
@echo "opt"
...
syn: $(OUTPUT_SYN)
ila: $(OUTPUT_ILA)
opt: $(OUTPUT_OPT)
...
不明白为什么步ila总是运行。当$(OUTPUT_SYN)保持不变且之前运行ila时,make仍然运行ila步。
预期的行为是ila仅在第一步中更改$(OUTPUT_SYN)时运行。如果$(OUTPUT_SYN)未更改,则应跳过ila并运行opt。
如何调试和修复此问题?
答案 0 :(得分:0)
由于您没有提供有关变量价值或食谱的信息,因此我们几乎无法告诉您原因。
但是,请注意,如果配方的目标不存在,那么配方总是运行(必须是,因为make无法确定它是否已过期)。因此,如果$(OUTPUT_ILA)
目标的配方没有创建变量OUTPUT_ILA
命名的文件(无论扩展到什么),那么将始终运行此配方。
换句话说,如果您希望它能正常工作,您应该确保配方更新自动变量$@
指定的文件。