У меня есть простой Makefile, как это:сделать неявные правила не работают без команды
%.t1: %.t2
%.t2:
echo "t2"
Когда я типа make x.t2
он прекрасно работает. Но когда я печатаю make x.t1
Я получаю
make: *** No rule to make target 'x.t1'. Stop.
Если я изменяю в% .t1 цель сказать
%.t1: %.t2
echo
Затем он работает. Почему он не работает без команды? Я использую GNU make 4.0 для Fedora 23.
Потому что не существует правила для построения 'x.t1'. Что вы ожидаете от достижения цели «x.t1» в этот момент? Почему у вас есть makefile, настроенный так? Какова ваша конечная цель? –
Я понимаю, что% .t1 соответствует любой цели, которая заканчивается на .t1. Итак, это правило, которое я бы хотел использовать, так же, как он знает, использовать цель% .t2, когда я прошу сделать x.t2. Моя цель - использовать спецификации зависимостей как форму декларативного программирования. Пример, который я дал, изобретателен, но с несколькими зависимостями и побочными эффектами этот подход может быть весьма полезным. – theTrickster
Вы не указали правило для '% .t1', которое вы указали в качестве необходимого условия. Это правило без рецепта. make не нравится. Вы можете дать ему пустой рецепт, если хотите, хотя '% .t1:% .t2;'. Вы также хотели бы отметить его как «.PHONY», чтобы это хорошо работало. Можете ли вы представить небольшой пример того, что вы пытаетесь сделать здесь? –