7
我正在觀察make的一個有趣的行爲,我想知道除了gmake中的錯誤之外是否還有合理的解釋。沒有配方的makefile模式規則
比方說,我們在makefile文件如下:
%-animal:
echo "$* is an animal"
%-fox: %-fox-animal
%-wolf: %-wolf-animal
最後兩個目標之間的區別是,「%-wolf」沒有任何祕方,和「%蘭狐」有一個空的食譜(即在開始時只是一個帶有製表符的行)。
當我們試圖執行規則,這裏發生了什麼:
具有配方(雖然空單)的作品,那是不是就一個沒有[[email protected] tmp]# make freddy-animal
echo "freddy is an animal"
freddy is an animal
[[email protected] tmp]# make freddy-wolf
make: *** No rule to make target `freddy-wolf'. Stop.
[[email protected] tmp]# make freddy-fox
echo "freddy-fox is an animal"
freddy-fox is an animal
i.e.the方式規則。我是否錯過了它應該工作的方式?
你稱之爲'食譜',打電話'制定規則'。所以它的信息與你認爲應該做的事情一致:對狼來說有一個規則,但是沒有規則來製造狼隊。 – reinierpost 2010-09-19 18:50:53
@reinierpost:GNU Make 3.82版本包含一個史詩性文檔搜索/替換,爲用於更新規則目標的一組命令創建術語'recipe'。所以(1)這不僅僅是m1tk4的術語,(2)這對我也是一個驚喜。參見http://cvs.savannah.gnu.org/viewvc/make/doc/make.texi?root=make&view=log的r1.51。 – 2010-09-27 21:21:00
@John Marshall:嗯......很高興知道,謝謝。 (我在3.81上,直到Cygwin將更新它。) – reinierpost 2010-09-28 08:08:03