От следующих функций зависит, как будет работать make. Обычно они используются для предоставления информации пользователям Makefile, или могут привести к остановке процесса сборки при обнаружении какой-либо ошибки в окружении (см. "8.13 Functions That Control Make" [1]), либо для безусловной остановки.
$(error text_message...)
Генерирует фатальную ошибку с сообщением в строке text_message. Обратите внимание, что ошибка генерируется при каждом вычислении этой функции. Таким образом, если вы поместите функцию $(error ...) внутри операторов цели (recipes, см. [3]), или в правой части рекурсивного присваивания переменной, то она не будет вычислена, пока обработка не будет развернута до конца. Текст сообщения будет расширен до момента генерации ошибки.
Например,
ifdef ERROR1
$(error error is $(ERROR1)) endif
... сгенерирует фатальную ошибку во время чтения makefile, если определена make-переменная ERROR1. Или,
ERR = $(error found an error!)
.PHONY: err
err: ; $(ERR)
... сгенерирует фатальную ошибку при работе make, если была вовлечена err target.
$(warning text_message...)
Эта функция работает подобно функции error, показанной выше, за исключением того, что она не приводит к остановке работы make. Вместо этого будет расширено text_message, и будет отображено соответствующее сообщение, но обработка makefile при этом продолжится.
Результатом расширения этой функции будет пустая строка.
$(info text_message...)
Эта функция просто печатает содержимое своего текстового (расширенного) аргумента (аргументов) в stdout. Никакие имена makefile или номера строк не добавляются. Результатом расширения этой функции будет пустая строка.
exit [код_статуса]
Это обычный оператор операционной системы, который может использоваться в синтаксисе последовательности операторов цели (recipes, см. [3]). Он немедленно завершит работу make со статусом возврата, переданном в аргументе exit.
[Ссылки]
1. GNU make. 2. Магия makefile на простых примерах. 3. Makefile: синтаксис команд цели (recipe syntax). |