Подавление наследования
Как описано в предыдущих разделах, make переменные наследуются зависимостями. Эта возможность позволяет вам изменить поведение зависимости, основываясь на тех целях, которые вызвали её перестроение. Например, вы можете установить целевую переменную на debug целе, а затем выполнение 'make debug' заставит эту переменную унаследоваться всеми зависимостями debug, в то время как выполнение 'make all' (например) не вызовет это назначение.
Иногда, однако, вы можете не захотеть, чтобы переменная наследовывалась. Для таких случаев make предоставляет модификатор private. Хотя этот модификатор может использоваться с любым назначением переменной, он наиболее уместен с целевыми и шаблонными переменными. Любая переменная, помеченная private, будет видна своей локальной цели, но не будет унаследована зависимостями этой цели. Глобальная переменная, помеченная private, будет видна в глобальной области видимости, но не будет унаследована никакой целью, и поэтому не будет видна ни в одном рецепте.
В качестве примера рассмотрим этот makefile:
EXTRA_CFLAGS = prog: private EXTRA_CFLAGS = -L/usr/local/lib prog: a.o b.o
Из-за модификатора private, a.o и b.o не унаследуют назначение переменной EXTRA_CFLAGS от цели prog.
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/Suppressing-Inheritance.html