簡體   English   中英

Makefile:無規則可作為目標

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

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