覆盖Makefile目标

时间:2012-04-03 06:46:04

标签: makefile

情况如下:我们使用通用的perforce源控制系统。每次构建时,我们都会同步最新的代码并从perforce运行Makefile(让我们称之为主Makefile)。是否可以通过对其进行非常小的更改来覆盖主Makefile中的目标,以便我们可以在同一目标上插入一些自定义操作。

例如,主Makefile看起来像这样

all:
     echo "main Makefile actions"

我们如何通过添加个人Makefile.personal

将我们的自定义操作插入到同一规则中
all:
     echo "my actions"

预期的结果是,当我们执行make all时,执行的操作都是

echo "main Makefile actions"
echo "my actions"

任何建议都表示赞赏。谢谢和最诚挚的问候

2 个答案:

答案 0 :(得分: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而你关心订单,有几种不同的方法可以做到,没有漂亮。

答案 1 :(得分:1)

至少有几种方法:

1)在另一个包含主makefile的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可以向现有目标添加动作。