Использование переменных в рецептах
Другой способ, которым make обрабатывает рецепты, заключается в расширении любых ссылок на переменные в них (см. Основы ссылок на переменные). Это происходит после того, как make завершит чтение всех make файлов и цель будет определена как устаревшая; таким образом, рецепты для целей, которые не перестраиваются, никогда не расширяются.
Ссылки на переменные и функции в рецептах имеют одинаковый синтаксис и семантику, что и ссылки в других местах make файла. У них также одинаковые правила цитирования: если вы хотите, чтобы знак доллара появился в вашем рецепте, вы должны удвоить его (‘$$’). Для оболочек, таких как стандартная оболочка, которые используют знаки доллара для ввода переменных, важно чётко понимать, является ли переменная, которую вы хотите использовать, make переменной (используйте один знак доллара) или переменной оболочки (используйте два знака доллара). Например:
LIST = one two three
all:
for i in $(LIST); do \
echo $$i; \
done
что приводит к тому, что следующая команда передаётся оболочке:
for i in one two three; do \
echo $i; \
done
что генерирует ожидаемый результат:
one two three
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/Variables-in-Recipes.html