簡體   English   中英

為什么makefile目標始終運行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM