Проблема в том, что make всегда хочет рецепт для каждой цели. Если вы пишете это без рецепта, связанного с ним:
dist/myapp_darwin.tar.gz: release
, который не определяет правило для цели dist/myapp_darwin.tar.gz
, все, что он делает, это добавляет новое условие release
к этой цели. Make все равно придется искать в своей базе данных правил, чтобы найти правило для построения этой цели, и оно будет соответствовать шаблонному правилу.
Итак, он будет запускать обоих recipe2
затем recipe1
.
Если вы хотите объявить явное правило для цели, вы должны дать ему рецепт, даже если это неоперация:
dist/myapp_darwin.tar.gz: release
@:
Теперь make имеетрецепт для этой цели, и ему не нужно будет искать его с помощью поиска неявных правил.