覆盖Makefile目标
情况如下:我们使用常见的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"
任何建议表示赞赏。感谢和问候
至少有两种方法:
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可以将操作添加到现有目标。
+1双冒号规则,这很聪明。 – Beta 2012-04-03 09:13:02
如果你愿意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
,你做有关订单照顾,有几个不同的方式来做到这一点,没有漂亮。
感谢大家的回答! Maxim Yegorushkin的方法在perforce上对Makefile进行了很小的修改,所以我选择它 – 2012-04-03 08:26:38