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