Spec-Zone.ru › GNU Make

Основы ссылок на переменные

Для подстановки значения переменной запишите знак доллара, за которым следует имя переменной в скобках или фигурных скобках: либо ‘$(foo)’, либо ‘${foo}’ — это допустимая ссылка на переменную foo. Именно это особое значение ‘$’ объясняет, почему для получения одиночного знака доллара в имени файла или рецепте необходимо написать ‘$$’.

Ссылки на переменные могут использоваться в любом контексте: целевых файлах, предшествующих задачах, рецептах, большинстве директив и новых значениях переменных. Вот пример распространённого случая, где переменная содержит имена всех объектных файлов программы:

objects = program.o foo.o utils.o
program : $(objects)
        cc -o program $(objects)

$(objects) : defs.h

Ссылки на переменные работают путём строгого текстового подстановления. Таким образом, правило

foo = c
prog.o : prog.$(foo)
        $(foo)$(foo) -$(foo) prog.$(foo)

могло быть использовано для компиляции программы на языке C prog.c. Поскольку пробелы перед значением переменной игнорируются при присвоении переменной, значение foo точно равно ‘c’. (На самом деле, не нужно так писать свои make-файлы!)

Знак доллара, за которым следует символ, отличный от знака доллара, открывающей скобки или фигурной скобки, рассматривает этот одиночный символ как имя переменной. Таким образом, вы можете сослаться на переменную x с помощью ‘$x’. Однако такая практика может привести к путанице (например, ‘$foo’ ссылается на переменную f, за которой следует строка oo), поэтому мы рекомендуем использовать скобки или фигурные скобки вокруг всех переменных, даже однобуквенных, если только их опускание не улучшает читаемость. Одним из мест, где читаемость часто улучшается, являются автоматические переменные (см. Автоматические переменные).

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/Reference.html

Spec-Zone.ru

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