2017-07-12 34 views
0

這是想法:

$(filenameParam)_%.sfx : commun_prereq.per 
    mycommand $< (all my [email protected]) 

其中%可以是任何一個字母,有時E,F一些次; ,s,有時h,r,t,基本上任何帶有字母的文件都在那裏。

+1

模式規則實例儘可能多的規則。所以你的規則不僅僅是一個,當你調用make時,它的數量和'* .sfx'文件一樣多。對於它們中的每一個,「$ @」都與特定的目標匹配。你想要的東西不清楚。當沒有'* .sfx'存在時,你期待什麼? –

回答

0

對於給定的規則調用,只會有一個目標,並將該目標的名稱放入[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 
相關問題