Spec-Zone.ru › GNU Make

Значения переменных, специфичных для шаблона

В дополнение к значениям переменных, специфичным для целевых платформ (см. Значения переменных, специфичные для целевых платформ), GNU make поддерживает значения переменных, специфичных для шаблонов. В этом формате переменная определяется для любой целевой платформы, которая соответствует заданному шаблону.

Установите значение переменной, специфичное для шаблона, следующим образом:

pattern … : variable-assignment

где шаблон — это шаблон с процентами. Как и в случае со значениями переменных, специфичных для целевых платформ, несколько значений шаблон создают значение переменной, специфичное для каждого шаблона индивидуально. присваивание-переменной может быть любым допустимым видом присваивания. Любое значение переменной командной строки будет иметь приоритет, если не указано override.

Например:

%.o : CFLAGS = -O

присвоит CFLAGS значение ‘-O’ для всех целевых платформ, соответствующих шаблону %.o.

Если целевая платформа соответствует более чем одному шаблону, переменные, специфичные для шаблона, с более длинными префиксами интерпретируются в первую очередь. Это означает, что более конкретные переменные имеют приоритет над более общими, например:

%.o: %.c
        $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

lib/%.o: CFLAGS := -fPIC -g
%.o: CFLAGS := -g

all: foo.o lib/bar.o

В этом примере первое определение переменной CFLAGS будет использовано для обновления lib/bar.o, даже если второе также относится к этой целевой платформе. Переменные, специфичные для шаблонов, которые приводят к одинаковой длине префикса, рассматриваются в том порядке, в котором они были определены в файле 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/Pattern_002dspecific.html

Spec-Zone.ru

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