0
假设我有一些图书馆,我需要为先决条件的目标,而这些库存储在包含库名称的目录:模式规则
.
|-- Makefile
|-- a
| |-- Makefile
| `-- lib-a
|-- b
| |-- Makefile
| `-- lib-a
`-- out
其中out
要求均为a/lib-a
和b/lib-b
。这两个库都可以通过简单地进入目录并在那里执行make lib-<X>
来构建。
我的想法Makefile
与模式规则,以避免重复是这样的,如果两个文件都在同一个目录或不同的目录中,但具有相同的名称,即可。我需要使用%
只有一次:
all: out
out: a/lib-a b/lib-b
cat $^ > out
%/lib-%:
make -C $(dir [email protected])
然而,这并不工作,因为%/lib-%
模式是非法的。
你可以把配方的罐装配方,以避免重复的食谱内容,或者你可以使用'foreach','call'等来建立目标,以避免重复。 –