Правило шаблона Makefile, ссылающееся на стебель в зависимостях

Я хочу правило шаблона с зависимостями, построенными как из стебля, так и с помощью подстановочных знаков, т.е. что-то вроде

$(FILES): %.o: %.c $(wildcard %*.c)

Это не работает: стебель% не расширен в функции подстановки (см. http://www.gnu.org/software/make/manual/html_node/Pattern-Rules.html), в то время как автоматический переменная $*, похоже, не распознается при перечислении зависимостей.

Есть ли (не слишком kludgy) способ сделать что-то вроде этого?

Ответы

Ответ 1

Как указано в разделе 10.5.3 руководства GNU make, автоматические переменные (что и есть $*) недоступны в предварительных требованиях, но также относятся к обходу, а именно к вторичному расширению.

Если я правильно понял (и вы), что-то вроде этого должно делать то, что вы хотите:

.SECONDEXPANSION:
$(FILES): %.o: %.c $$(wildcard $$**.c)