[英]Makefile: No rule to make target
我有兩個非常相似的makefile,但是它們的行為不同。 我不明白為什么...
選項1:
all: aa
@echo made
a% : b%
@echo ba
ba : c
失敗於
make: *** No rule to make target 'c', needed by 'ba'. Stop.
我期望這是因為c不存在。
選項2相同,但沒有回顯:
all: aa
@echo made
a% : b%
ba : c
這個失敗了
make: *** No rule to make target 'aa', needed by 'all'. Stop.
這很奇怪,因為有一個“ aa”規則。
為什么這兩個makefile的行為不同?
謝謝
對於aa
沒有規定。 您的規則:
a% : b%
沒有食譜就沒有做你想做的事。 沒有配方的模式規則將刪除該模式規則。 因此,基本上這行是無操作的(因為您之前沒有像這樣的模式規則)。 您可以刪除此行並獲得相同的行為。
對於您的場景1,我自己運行測試,發現如果刪除ba : c
規則並且ba
文件已經存在,則可以正常工作。 如果您將規則與任何配方一起放回去,請嘗試檢查ba是否是最新的,以便它嘗試使用ba : c
規則,但會失敗,因為c
沒有規則。
如果您不希望規則嘗試“重新創建”文件(意味着去應用其他規則),而只是檢查是否存在應用當前規則,則對規則::
使用雙冒號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.