2012-04-03 110 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,你做有关订单照顾,有几个不同的方式来做到这一点,没有漂亮。