2012-04-03 158 views
0

情況如下:我們使用常見的perforce源代碼管理系統。每次構建時,我們都會同步最新代碼並從perforce運行Makefile(我們稱之爲主Makefile)。是否有必要在主Makefile內部重寫目標,並對其進行微小的更改,以便我們可以爲同一目標插入一些自定義操作。覆蓋Makefile目標

例如,主Makefile文件看起來像這樣

all: 
    echo "main Makefile actions" 

我們如何可以插入我們定製的行動納入同一規則,通過包括個人Makefile.personal

all: 
    echo "my actions" 

預期的結果是,當我們做make all,進行的動作都是

echo "main Makefile actions" 
echo "my actions" 

任何建議表示讚賞。感謝和問候

+0

感謝大家的回答! Maxim Yegorushkin的方法在perforce上對Makefile進行了很小的修改,所以我選擇它 – 2012-04-03 08:26:38

回答

1

至少有兩種方法:

1)有另一個目標與另一個makefile文件,其中包括主生成文件的自定義操作:

# my_makefile.mk 
include Makefile 

my_custom_actions : all 
    echo "my actions" 

$ make -f my_makefile.mk my_custom_actions 

2)在主Makefile中使用double colon rules所以另一個makefile可以將操作添加到現有目標。

+0

+1雙冒號規則,這很聰明。 – Beta 2012-04-03 09:13:02

2

如果你願意make而不是make all,你可以這樣做:

主要的Makefile:

include Makefile.personal 

all: 
    echo "main Makefile actions" 

Makefile.personal:

my_all: all 
    echo "my actions" 

如果您想要make all,但你不在乎這兩套動作的順序,你可以這樣做:

主要的Makefile:

include Makefile.personal 

all: 
    echo "main Makefile actions" 

Makefile.personal:

my_all: 
    echo "my actions" 

all: my_all 

我要make all,你做有關訂單照顧,有幾個不同的方式來做到這一點,沒有漂亮。