0
GNU Make手冊說,選擇最「特定」的隱式規則,這是一件好事。除了......如果有一條規則不需要隱含的先決條件,即使它更「一般」,也會選擇它。請參閱:如何使Make始終使用最具體的隱式規則?
> touch existing
> cat Makefile
%.o: existing
@echo general
foobar%.o: foobar%.i
@echo specific
foobar%.i: ;
> rm foobar0.i
> make -r foobar0.o
general
> touch foobar0.i
> make -r foobar0.o
specific
恕我直言,最具體的規則,應始終選擇,不管是否有0隱含prerequsites,尤其是,是否有這樣的先決條件已經存在或者沒有。但我不想在這裏問「爲什麼」。
相反,有人可以建議我,如何強制所需的行爲。無論如何,我總是希望應用最具體的規則。有沒有辦法強制呢?
問題是,始終使用最直接的規則(最少數量的中間步驟)作爲第一優先級。使用更具體的模式規則(相對於更通用的模式規則)是次要的,因此僅對於具有相同數量的中間步驟的鏈條而言很重要。我不知道有什麼辦法可以改變這些優先事項。 –
你使用什麼版本的產品?規則的選擇在GNU make 3.81和3.82之間改變。 「最具體」的規則選擇是我相信的3.82行爲,而不是3.81行爲。如果你反轉makefile中這兩條規則的順序,你是否會得到你期望的行爲(如果你使用的是3.81)? –