Аргументы для указания целей
Цели — это целевые объекты, которые make должны в конечном итоге стремиться обновить. Другие целевые объекты также обновляются, если они появляются в качестве предварительных условий целей или предварительных условий предварительных условий целей и т. д.
По умолчанию целью является первый целевой объект в файле make (не считая целевых объектов, начинающихся с точки). Поэтому файлы make обычно пишутся так, чтобы первой целью было компилирование всей программы или программ, которые они описывают. Если в первой правила make несколько целей, то только первая цель в правиле становится целью по умолчанию, а не весь список. Вы можете управлять выбором целевого объекта по умолчанию внутри своего файла make, используя переменную .DEFAULT_GOAL (см. Другие специальные переменные).
Вы также можете указать другую или другие цели с помощью аргументов командной строки для make. Используйте имя цели в качестве аргумента. Если вы указываете несколько целей, make обрабатывает каждую из них по очереди в том порядке, в котором вы их назвали.
Любая цель в файле make может быть указана как цель (если она не начинается с ‘-’ или не содержит ‘=’, в этом случае она будет обработана как переключатель или определение переменной соответственно). Даже цели, отсутствующие в файле make, могут быть указаны, если make может найти неявные правила, которые говорят, как их создать.
Make установит специальную переменную MAKECMDGOALS в список целей, которые вы указали в командной строке. Если цели не были заданы в командной строке, эта переменная пуста. Обратите внимание, что эту переменную следует использовать только в особых случаях.
Пример подходящего использования — это избежание включения файлов .d во время правил clean (см. Автоматические предварительные условия), чтобы make не создавал их только для того, чтобы немедленно удалить их снова:
sources = foo.c bar.c ifeq (,$(filter clean,$(MAKECMDGOALS)) include $(sources:.c=.d) endif
Одно из применений указания цели — если вы хотите скомпилировать только часть программы или только одну из нескольких программ. Укажите в качестве цели каждый файл, который вы хотите пересоздать. Например, рассмотрим директорию, содержащую несколько программ, с файлом make, который начинается так:
.PHONY: all all: size nm ld ar as
Если вы работаете над программой size, вы можете сказать ‘make size’, чтобы были перекомпилированы только файлы этой программы.
Другое применение указания цели — создание файлов, которые обычно не создаются. Например, может быть файл отладочного вывода или версия программы, скомпилированная специально для тестирования, которая имеет правило в файле make, но не является предварительным условием для цели по умолчанию.
Другое применение указания цели — выполнение рецепта, связанного с фиктивной целью (см. Фиктивные цели) или пустой целью (см. Пустые файлы целей для записи событий). Многие файлы make содержат фиктивную цель с именем clean, которая удаляет все, кроме исходных файлов. Естественно, это делается только если вы запросите это явно с помощью ‘make clean’. Ниже приведен список типичных фиктивных и пустых имен целей. См. Стандартные цели для подробного списка всех стандартных имен целей, используемых пакетами программного обеспечения GNU.
- all
-
Создать все целевые объекты верхнего уровня, о которых знает файл make.
- clean
-
Удалить все файлы, которые обычно создаются при запуске
make. - mostlyclean
-
Как ‘clean’, но может воздержаться от удаления нескольких файлов, которые люди обычно не хотят перекомпилировать. Например, цель ‘mostlyclean’ для GCC не удаляет libgcc.a, потому что перекомпилирование его редко необходимо и занимает много времени.
- distclean
- realclean
- clobber
-
Любая из этих целей может быть определена для удаления больше файлов, чем делает ‘clean’. Например, это удалит конфигурационные файлы или ссылки, которые вы обычно создаете в качестве подготовки к компиляции, даже если сам файл make не может создать эти файлы.
- install
-
Скопировать исполняемый файл в каталог, который пользователи обычно просматривают для поиска команд; скопировать любые вспомогательные файлы, используемые исполняемым файлом, в каталоги, где он будет их искать.
-
Печатать списки исходных файлов, которые были изменены.
- tar
-
Создать архив tar из исходных файлов.
-
Создать оболочечный архив (файл shar) из исходных файлов.
- dist
-
Создать дистрибутивный файл исходных файлов. Это может быть архив tar, или архив shar, или сжатая версия одного из вышеперечисленных, или даже больше одного из вышеперечисленных.
- TAGS
-
Обновить таблицу меток для этой программы.
- check
- test
-
Выполнить самотестирование программы, которую строит этот файл 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/Goals.html