迫使先决条件的顺序在Makefile文件(forcing order of prerequisite

2019-07-18 02:19发布

我有一个第三方的makefile,我想(T1)不建,直到另一个目标之一,自定义目标(T2)首先建造。 通常,这将通过使T2 T1的先决条件来完成。 但T1使用$ ^在其规则之一..所以,通过增加的前提下,我最终破坏构建...什么我有是这样的:

T1: x y z T2
    $(MAKE) -j $^;
    # fails because T2 should not be passed to the make!!!

.PHONY: T2

T2:
    #do some linking and prep for T1

是否有保证T2在T1之前运行的好办法? (注:上面的例子实际上是由一个位简化T1实际上是Linux内核生成文件内的vmlinux目标,所以重写它不仅困难,它使代码非便携式另外,我无法之前运行T2。呼吁作出内核由于一些其他依赖)。

Answer 1:

有T2作为订单唯一的先决条件 :

T1: x y z | T2
    $(MAKE) -j $^;
    # Make will run the T2 rule before this one, but T2 will not appear in $^


Answer 2:

你可以只调用make在构建脚本与两个目标以正确的顺序,如

make T2 T1

这样,你不需要做任何修改T1。



文章来源: forcing order of prerequisites in Makefiles