Вместо выполнения рецептов
Файл make определяет, как проверить, является ли цель обновленной, и как обновить каждую цель. Но обновление целей — не всегда то, что вам нужно. Некоторые параметры определяют другие действия для make.
- ‘-n’
- ‘--just-print’
- ‘--dry-run’
- ‘--recon’
-
«Без действия». Приводит к тому, что
makeвыводит рецепты, необходимые для обновления целей, но не выполняет их фактически. Обратите внимание, что некоторые рецепты всё же выполняются, даже с этим флагом (см. Как работает переменнаяMAKE). Также выполняются все рецепты, необходимые для обновления включаемых файлов make (см. Как пересоздаются файлы make). - ‘-t’
- ‘--touch’
-
«Изменение времени модификации». Помечает цели как обновлённые без фактического изменения их содержимого. Другими словами,
makeимитирует обновление целей, но не изменяет их содержимое; вместо этого обновляется только время их последней модификации. - ‘-q’
- ‘--question’
-
«Вопрос». Без вывода проверит, являются ли цели обновлёнными, но не выполняет рецепты; код возврата указывает, нужны ли какие-либо обновления.
- ‘-W file’
- ‘--what-if=file’
- ‘--assume-new=file’
- ‘--new-file=file’
-
«Что если». Каждый флаг ‘-W’ сопровождается именем файла. Время модификации заданных файлов записывается
makeкак текущее время, хотя фактическое время модификации остаётся прежним. Вы можете использовать флаг ‘-W’ в сочетании с флагом ‘-n’, чтобы увидеть, что произойдёт при модификации определённых файлов.
С флагом ‘-n’ make выводит рецепт, который обычно выполнялся бы, но обычно не выполняет его.
С флагом ‘-t’ make игнорирует рецепты в правилах и использует (по сути) команду touch для каждой цели, которую нужно пересоздать. Команда touch также выводится, если не используется ‘-s’ или .SILENT. Для повышения скорости make не выполняет фактически программу touch. Она выполняет работу непосредственно.
С флагом ‘-q’ make ничего не выводит и не выполняет никаких рецептов, но код возврата равен нулю только в том случае, если цели, которые необходимо учитывать, уже обновлены. Если код возврата равен единице, то нужно выполнить некоторые обновления. Если make обнаруживает ошибку, код возврата равен двум, что позволяет отличить ошибку от цели, которая не обновлена.
Использование более одного из этих трёх флагов в одном вызове make является ошибкой.
Параметры ‘-n’, ‘-t’ и ‘-q’ не влияют на строки рецептов, начинающиеся с символов ‘+’ или содержащие строки ‘$(MAKE)’ или ‘${MAKE}’. Обратите внимание, что только строка, содержащая символ ‘+’ или строки ‘$(MAKE)’ или ‘${MAKE}’, выполняется независимо от этих параметров. Другие строки в том же правиле не выполняются, если они тоже не начинаются с ‘+’ или не содержат ‘$(MAKE)’ или ‘${MAKE}’ (см. Как работает переменная MAKE).
Флаг ‘-t’ предотвращает обновление фиктивных целей (см. Фиктивные цели), если нет строк рецептов, начинающихся с ‘+’ или содержащих ‘$(MAKE)’ или ‘${MAKE}’.
Флаг ‘-W’ предоставляет две функции:
- Если вы также используете флаги ‘-n’ или ‘-q’, вы можете увидеть, что
makeсделает, если вы измените некоторые файлы. - Без флагов ‘-n’ или ‘-q’, когда
makeфактически выполняет рецепты, флаг ‘-W’ может направитьmakeдействовать так, как будто некоторые файлы были изменены, без фактического выполнения рецептов для этих файлов.
Обратите внимание, что опции ‘-p’ и ‘-v’ позволяют получить другую информацию о make или о используемых файлах make (см. Резюме опций).
Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/Instead-of-Execution.html