前言
是的,我的文件写得很糟糕 不,我/我们没有写它们;我们从另一家公司继承了这个代码库 我想知道是否有可能在不重写问题的情况下修复我的问题。
问题
有没有办法从另一个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:/mk1
和C:/mk2
是同一个makefile项目的一部分,它通过一些顶级makefile与make --jobs=X
执行,所以在理论上所有的makefile都可以并行制作。
答案 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(也许)重建foo
和bar
即使它们已经存在(因为这个makefile不知道是什么)他们可能有的先决条件。)
答案 1 :(得分:0)
使用include makefile
(或sinclude
)机制合并继承的makefile怎么样?只要您自己的目标具有不同的名称,这应该有效。
您还可以通过指定多个-f makefile
选项来连接makefile。它们按顺序连接。