比方说,我有这样的GNU生成文件:
SOURCE = source1/a source2/b source3/c
BUILD = build/a build/b build/c
BASE = build/
$(BUILD): $(BASE)%: %
install $< [email protected]
所以基本上我在目录来源1,源2和source3,文件,这我想无论如何放进建立目录。
我想用一个静态模式规则来实现这一点。我天真的做法是:
$(BUILD): $(BASE)%: $(filter *%, $(SOURCE))
install $< [email protected]
这是行不通的。我知道过滤器也用百分号表示。
$(BUILD): $(BASE)%: $(wildcard */$(notdir %))
install $< [email protected]
这也行不通。但即使如此,这仍然是不令人满意的,因为我可能想touch
一个新的文件source1/b,这会弄乱一切。
如何在GNU makefile静态模式规则中使用$(filter)
函数?还是有另一种方法来做到这一点?
层次结构现在看起来是这样的:
source1/
a
source2/
b
source3/
c
build/
我希望它看起来像这样:
source1/
a
source2/
b
source3/
c
build/
a
b
c
如果你有'源1/B'和'源2/B',你要投入'然后呢建/'? – Beta
我想把'a','b'和'c'放入'build'中。 – hgiesel
*您想将哪个''b'放入'build /'中?你说你可能希望在'source2/b'之外引入'source/b',但是你没有说你想在这种情况下做什么。 – Beta