Makefile中的模式规则和多个目录

时间:2014-01-20 00:37:13

标签: makefile gnu-make

我在使用模式规则并将它们应用于多个目录中的依赖项和目标时遇到了问题。这是一个例子来说明我的问题。

考虑以下目录结构

|- dir 1
|  - file1.A
|- dir 2
|  - file2.A
|- dir 3
|  - dir 4
|    - file4.A

我希望能够指定一个模式规则,可以应用于所有* .A文件。

%.B: %.A
  myscript $<

指定此内容的最佳方式是什么?

我尝试了下面这个,作为一个黑客,但它给了我一个错误,我混合隐式和静态规则。

*/%.B: */%.A:
  myscript $<

*/*/%B: */%.A:
  myscript $<

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

A_FILES := $(shell find . -type f -name '*.A')
B_FILES := $(patsubst %.A,%.B,$(A_FILES))

all: $(B_FILES)

%.B: %.A
    myscript $<

在某些平台上,这将有效:

A_FILES := $(wildcard **/*.A)