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

模式规则和Makefiles中的多个目录,makefile,gnu-make,Makefile,Gnu Make,我在使用模式规则并跨多个目录中的依赖项和目标应用它们时遇到了问题。这里有一个例子来说明我的问题 考虑以下目录结构 |- dir 1 | - file1.A |- dir 2 | - file2.A |- dir 3 | - dir 4 | - file4.A 我希望能够指定一个可以应用于所有*.a文件的模式规则 %.B: %.A myscript $< %.B:%.A myscript$< 最好的方式是什么 作为一个黑客,我尝试了以下方法,但它给了我一个错误,我混合了

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

考虑以下目录结构

|- dir 1
|  - file1.A
|- dir 2
|  - file2.A
|- dir 3
|  - dir 4
|    - file4.A
我希望能够指定一个可以应用于所有*.a文件的模式规则

%.B: %.A
  myscript $<
%.B:%.A
myscript$<
最好的方式是什么

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

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

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

任何帮助都将不胜感激。

如果您正确使用第一条规则(即
make dir1/file1.B
),它将起作用。你想做什么?我想要一个规则
all
,我可以运行它来创建所有%.B文件。
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)