GNU make - 另一个makefile

时间:2016-08-12 18:07:31

标签: makefile gnu-make

前言

是的,我的文件写得很糟糕 不,我/我们没有写它们;我们从另一家公司继承了这个代码库 我想知道是否有可能在不重写问题的情况下修复我的问题。

问题

有没有办法从另一个makefile引用目标并将它们用作先决条件?

说你有:

all: libs binary

binary: # I need to add prereqs here
    blah
    blah2
    blah3

对于binary,我需要将其他makefile中的目标作为先决条件 我不能只include那些makefile,因此那些目标,因为那些makefile定义相同的变量,但具有不同的值。

是否可以执行以下操作:

binary: C:/mk1:foo C:/mk2:bar
    blah
    blah2
    blah3

更新

如果不清楚,makefile C:/mk1C:/mk2是同一个makefile项目的一部分,它通过一些顶级makefile与make --jobs=X执行,所以在理论上所有的makefile都可以并行制作。

2 个答案:

答案 0 :(得分:0)

有时递归制作 [duhn-duhn- duhnnnn!]是适合这项工作的工具:

binary: foo bar
    blah
    blah2
    blah3

.PHONY: foo bar

foo:
    $(MAKE) -f mk1 $@

bar:
    $(MAKE) -f mk2 $@

PHONY强制Make执行这些规则并调用其他makefile(也许)重建foobar即使它们已经存在(因为这个makefile不知道是什么)他们可能有的先决条件。)

答案 1 :(得分:0)

使用include makefile(或sinclude)机制合并继承的makefile怎么样?只要您自己的目标具有不同的名称,这应该有效。

您还可以通过指定多个-f makefile选项来连接makefile。它们按顺序连接。