GNU делает пустой рецепт, а не рецепт
Глядя на руководство по сборке GNU, в чем именно разница между пустым рецептом и без рецепта (например, см. Один экземпляр в Правилах без рецептов или предварительных условий)? Что еще более важно, когда следует использовать / избегать каждый из этих двух рецептов?
В моем нынешнем понимании всегда следует использовать
target: ;
потому что иногда неявное правило может нанести ущерб цели без правил.
1 ответ
У данной цели может быть только один рецепт. Если вы объявляете пустой рецепт, то теперь вы указали этой цели этот рецепт, и его не будут искать по неявным правилам. Также, если вы попытаетесь дать той же цели другой рецепт, то make будет жаловаться.
"Без рецепта" просто означает, что вы добавляете больше предварительных условий к существующей цели или, если вы не перечисляете предварительные условия, вы просто сообщаете make, что это цель, которая вас интересует. Но вы не отменяете никаких поиск рецепта, который сделает, сделает в другом месте.
Это определенно неправда, что всегда следует использовать один или другой: тот, который вы используете, зависит от того, чего вы пытаетесь достичь.
Я не знаю, что ты имеешь в виду, когда говоришь, что побеждаешь свою цель отсутствия правил, поэтому я не могу ответить на это... чего ты пытаешься достичь, когда говоришь "нет правил"?