Preface:
是的,我的makefile写的很糟糕 .
不,我/我们没有写;我们从另一家公司继承了这个代码库 .
我想知道是否有可能解决我的问题而不重写它们 .
Question
有没有办法从另一个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
UPDATE
如果不清楚,makefile C:/mk1
和 C:/mk2
是同一个makefile项目的一部分,该项目通过一些顶级makefile与 make --jobs=X
执行,所以理论上所有的makefile都可以并行生成 .
2 回答
有时 Recursive Make [duhn-duhn-duhnnnn!]是这项工作的正确工具:
PHONY
强制Make执行这些规则并调用其他makefile(也许)重建foo
和bar
,即使它们已经存在(因为这个makefile不知道它们可能具有哪些先决条件) .使用include makefile(或
sinclude
)机制来合并继承的makefile怎么样?只要您自己的目标具有不同的名称,这应该有效 .您还可以通过指定多个
-f makefile
选项来连接makefile . 它们按顺序连接在一起 .