0
這是想法:
$(filenameParam)_%.sfx : commun_prereq.per
mycommand $< (all my [email protected])
其中%可以是任何一個字母,有時E,F一些次; ,s,有時h,r,t,基本上任何帶有字母的文件都在那裏。
這是想法:
$(filenameParam)_%.sfx : commun_prereq.per
mycommand $< (all my [email protected])
其中%可以是任何一個字母,有時E,F一些次; ,s,有時h,r,t,基本上任何帶有字母的文件都在那裏。
對於給定的規則調用,只會有一個目標,並將該目標的名稱放入[email protected]
自動變量中。當make試圖構建目標foo_h.sfx
時[email protected]
將爲foo_h.sfx
;當make試圖建立一個目標時foo_r.sfx
然後[email protected]
將會是foo_r.sfx
等
有一個額外的皺紋:在一個模式規則中可能有多個目標模式。這導致通過一次調用規則來構建所有這些目標。在這種情況下,[email protected]
是想要構建的目標,導致此規則被解僱。如果你想得到其他目標之一,你需要使用$*
自己構建它,它與模式匹配。所以:
%.x %.y :
@echo '@ = [email protected]/* = $*'
會得到輸出:因爲有匹配的目標
$ make foo.x
@ = foo.x/* = foo
$ make foo.y
@ = foo.y/* = foo
模式規則實例儘可能多的規則。所以你的規則不僅僅是一個,當你調用make時,它的數量和'* .sfx'文件一樣多。對於它們中的每一個,「$ @」都與特定的目標匹配。你想要的東西不清楚。當沒有'* .sfx'存在時,你期待什麼? –