Spec-Zone.ru › GNU Make

Аргументы для указания целей

Цели — это целевые объекты, которые 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

Скопировать исполняемый файл в каталог, который пользователи обычно просматривают для поиска команд; скопировать любые вспомогательные файлы, используемые исполняемым файлом, в каталоги, где он будет их искать.

print

Печатать списки исходных файлов, которые были изменены.

tar

Создать архив tar из исходных файлов.

shar

Создать оболочечный архив (файл 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API