правила шаблона makefile без рецептов

Я наблюдаю интересное поведение make, и мне интересно, есть ли этому разумное объяснение помимо ошибки в gmake.

Допустим, у нас есть следующее в make-файле:

%-animal:
        echo "$* is an animal"

%-fox: %-fox-animal

%-wolf: %-wolf-animal

Разница между двумя последними целями в том, что "% -wolf" не имеет рецепта, а "% -fox" имеет пустой рецепт (т. Е. просто строка с табуляцией в начале).

Когда мы пытаемся выполнить правила, происходит вот что:

[root@cv19 tmp]# make freddy-animal
echo "freddy is an animal"
freddy is an animal
[root@cv19 tmp]# make freddy-wolf
make: *** No rule to make target `freddy-wolf'.  Stop.
[root@cv19 tmp]# make freddy-fox
echo "freddy-fox is an animal"
freddy-fox is an animal

То есть шаблонное правило, у которого есть рецепт (хотя и пустой), работает, а у которого нет не. Мне что-то не хватает в том, как это должно работать?

9
задан jaco0646 15 November 2018 в 04:43
поделиться