我有一个Makefile:
broken-%: $(wildcard src/%/*)
@echo $*
@echo $^
working-%: src/a/*
@echo $*
@echo $^
$*
是%
(词干),而$^
是先决条件。
目录结构如下:
│ Makefile
│
└───src
└───a
main.java
使用Makefile:
> make broken-a
a
> make working-a
a
src/a/main.java
>
这两个应该输出相同,但事实并非如此。
由于一些原因,将 %
设置为 a
的 $(wildcard src/%/*)
返回为空。可能是因为前提中的通配符自动计算,所以在调用 wildcard
函数之前,src/%/*
已经被计算了?
有人知道如何使其正常工作吗?