Можете ли вы явно объявить упомянутый файл .INTERMEDIATE? - PullRequest
0 голосов
/ 18 февраля 2019

В комментариях к этому ответу MadScientist, текущий сопровождающий GNU Make, говорит о явно объявленных целях .INTERMEDIATE:

[файл] просто нужно упомянутьявно в любом правиле (не в рецепте), чтобы удалить его право на промежуточный статус.

С другой стороны, Руководство по сборке GNU говорит

Однако вы можете явно пометить файл как промежуточный, указав его как обязательное условие специальной цели .INTERMEDIATE.Это вступает в силу, даже если файл упоминается явно каким-либо другим способом.

Что правильно или что я ошибся?

1 Ответ

0 голосов
/ 18 февраля 2019

Есть недопонимание: оба вышеприведенных утверждения верны, но применяемый вами контекст ( для явно объявленных целей .INTERMEDIATE ) неверен;это утверждение было ответом на вопрос, заданный в комментарии к моему ответу, который отличался от первоначального вопроса.

Без специальных переопределений цель может быть промежуточной, если она полностью определяется make (неперечислены где-либо явно в make-файле, но обнаружены только при неявном поиске правил).

Если цель указана как цель или обязательное условие в make-файле, по умолчанию она не может быть промежуточной.Специальная форма .INTERMEDIATE позволяет вам объявить, что указанная цель является промежуточной, даже если это так.

Чтобы убедиться, что цель является не промежуточной, достаточно просто упомянуть ее вmakefile как цель или предварительное условие некоторой цели где-то (не обязательно должна быть той, которая фактически создается во время этого вызова make).

Чтобы гарантировать, что цель является промежуточным звеном , оналибо не следует упоминать, либо объявить обязательным условием .INTERMEDIATE.

...