Переменные из среды
Переменные в make могут поступать из среды, в которой выполняется make. Каждая переменная среды, которую видит make при запуске, преобразуется в переменную make с тем же именем и значением. Однако явное присваивание в файле make или с аргументом команды переопределяет переменную из среды. (Если указан флаг «-e», то значения из среды переопределяют присваивания в файле make. См. Сводку опций. Но эта практика не рекомендуется.)
Таким образом, установив переменную CFLAGS в вашей среде, вы можете заставить все компиляции C в большинстве файлов make использовать предпочитаемые вами переключатели компилятора. Это безопасно для переменных со стандартным или общепринятым значением, поскольку вы знаете, что ни один файл make не будет использовать их для других целей. (Обратите внимание, что это не полностью надежно; некоторые файлы make явно устанавливают CFLAGS и поэтому не зависят от значения в среде.)
Когда make выполняет рецепт, некоторые переменные, определенные в файле make, помещаются в среду каждой команды, которую make вызывает. По умолчанию в среду команд помещаются только переменные, полученные из среды make или заданные в командной строке. Вы можете использовать директиву export для передачи других переменных. Подробности см. в Передача переменных дочернему make.
Другое использование переменных из среды не рекомендуется. Неразумно, чтобы файлы make зависели от функционирования от переменных среды, заданных вне их контроля, так как это приведет к тому, что разные пользователи получат разные результаты из одного файла make. Это противоречит самому назначению большинства файлов make.
Особенно вероятны такие проблемы с переменной SHELL, которая обычно присутствует в среде для указания выбора пользователем интерактивной оболочки. Было бы очень нежелательно, чтобы этот выбор повлиял на make; поэтому make обрабатывает переменную среды SHELL специальным образом; см. Выбор оболочки.
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/Environment.html