覆盖Makefile目标

覆盖Makefile目标,makefile,Makefile,情况如下:我们使用通用性能的源控制系统。每次构建时,我们都会同步最新的代码,并从perforce运行Makefile(让我们称之为主Makefile)。在主Makefile中,我们可以通过非常小的更改来覆盖目标,这样我们就可以在同一个目标上插入一些自定义操作 例如,主Makefile如下所示 all: echo "main Makefile actions" 我们如何通过包含个人Makefile.personal all: echo "my actions" 预期的结果是

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

例如,主Makefile如下所示

all:
     echo "main Makefile actions"
我们如何通过包含个人
Makefile.personal

all:
     echo "my actions"
预期的结果是,当我们做
makeall
时,执行的操作都是

echo "main Makefile actions"
echo "my actions"

如有任何建议,我们将不胜感激。感谢并致以最诚挚的问候

如果您愿意
制作
而不是
制作所有
,您可以这样做:

主生成文件:

include Makefile.personal

all:
     echo "main Makefile actions"
include Makefile.personal

all:
     echo "main Makefile actions"
Makefile.personal:

my_all: all
     echo "my actions"
my_all:
     echo "my actions"

all: my_all
如果您想
全部
,但不关心这两组操作的顺序,可以这样做:

主生成文件:

include Makefile.personal

all:
     echo "main Makefile actions"
include Makefile.personal

all:
     echo "main Makefile actions"
Makefile.personal:

my_all: all
     echo "my actions"
my_all:
     echo "my actions"

all: my_all

如果您想
全部制作
,并且您确实关心订单,有几种不同的方法可以做到这一点,但都不漂亮。

如果您愿意
制作
而不是
全部制作
,您可以这样做:

主生成文件:

include Makefile.personal

all:
     echo "main Makefile actions"
include Makefile.personal

all:
     echo "main Makefile actions"
Makefile.personal:

my_all: all
     echo "my actions"
my_all:
     echo "my actions"

all: my_all
如果您想
全部
,但不关心这两组操作的顺序,可以这样做:

主生成文件:

include Makefile.personal

all:
     echo "main Makefile actions"
include Makefile.personal

all:
     echo "main Makefile actions"
Makefile.personal:

my_all: all
     echo "my actions"
my_all:
     echo "my actions"

all: my_all

如果你想
制作所有的
,并且你确实关心订单,有几种不同的方法可以做到这一点,但都不漂亮。

至少有两种方法:

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中使用,以便另一个Makefile可以向现有目标添加操作。

至少有两种方法:

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中使用,以便另一个Makefile可以向现有目标添加操作。

感谢大家的回答!Maxim Yegorushkin的方法对perforce上的Makefile做了最小的更改,因此我选择它感谢大家的回答!Maxim Yegorushkin的方法对perforce上的Makefile做了最小的更改,所以我选择了它