2013-04-25 126 views
0

對於具有給定擴展名的文件,我有一個通用規則,但我想爲帶有前綴的文件添加特殊情況。我嘗試這樣做:Makefile中的特殊大小寫模式規則

special-%.dat: special-%.raw 
    echo "Running rule 1" 

%.dat: 
    echo "Running rule 2" 

但是當我運行make special-1.dat,它忽略了第一條規則運行第二。切換規則的順序沒有區別。我怎樣才能解決這個問題?

+0

你確定你的例子是正確的嗎?目標'out-1.dat'不會使用'special - %。dat'這樣的模式:它們不匹配。 – MadScientist 2013-04-25 17:43:14

+0

好點;我從稍微不同的版本複製並粘貼了Makefile和命令行。現在修復。 – 2013-04-25 18:48:03

回答

2

文件special-1.raw是否存在?如果該文件不存在(並且您沒有可以創建該文件的規則),make將永遠不會選擇此規則,因爲先決條件不可用。這本身並不是一個錯誤:只有當make可以找到可以構建這個目標的NO規則時,它纔會失敗。

運行make -d將向您展示如何使make以遞歸方式考慮每個目標及其先決條件。