[英]Why a makefile target is always run?
生成文件:
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步驟。
預期的行為是僅在第一步更改$(OUTPUT_SYN)時才運行。 如果$(OUTPUT_SYN)不變,它將跳過ila並運行opt。
如何調試和解決此問題?
由於您沒有提供有關變量的值或配方的作用的任何信息,因此我們幾乎無法告訴您原因。
但是,請注意,如果配方的目標不存在,則該配方始終運行(必須這樣做,因為make無法確定其是否過時)。 因此,如果$(OUTPUT_ILA)
目標的配方未創建由變量OUTPUT_ILA
命名的文件(無論擴展OUTPUT_ILA
),則該配方將始終運行。
換句話說,如果您希望它能正常工作,則應確保配方更新了由自動變量$@
指定的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.