/ / Makefile използвайки wildcard и стеблото за предпоставки - makefile, gnu-make

Makefile използвайки wildcard и стеблото за предпоставки - makefile, gnu-make

Така че имам 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
>

И двамата трябва да имат едни и същи резултати, но те не са.

По някаква причина $(wildcard src/%/*) с % настроен на a не връща нищо. Това може да се дължи на това, че заместващите символи в предпоставки се оценяват автоматично src/%/* се оценява преди wildcard функцията се нарича?

Някой знае ли как да се получи това работи?

Отговори:

2 за отговор № 1

Моделите не се разширяват до момента, в който правилото действително се прилага по време на втората фаза, така че когато файлът първо се анализира, wildcard с буквалния низ src/%/*.

Вторично разширяване може да се използва за работа около това

.SECONDEXPANSION:
broken-%: $$(wildcard src/%/*)
@echo $*
@echo $^