DESTDIR: Поддержка поэтапной установки
DESTDIR — это переменная, добавляемая в префикс каждого устанавливаемого целевого файла, например:
$(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
Переменная DESTDIR задается пользователем в командной строке make в качестве абсолютного имени файла. Например:
make DESTDIR=/tmp/stage install
DESTDIR должно поддерживаться только в целевых файлах install* и uninstall*, так как это единственные целевые файлы, где это полезно.
Если ваш шаг установки обычно устанавливал бы /usr/local/bin/foo и /usr/local/lib/libfoo.a, то установка, выполненная как в примере выше, установила бы /tmp/stage/usr/local/bin/foo и /tmp/stage/usr/local/lib/libfoo.a вместо этого.
Добавление переменной DESTDIR в префикс каждого целевого файла обеспечивает поэтапную установку, где устанавливаемые файлы помещаются не напрямую в ожидаемое местоположение, а копируются во временное место (DESTDIR). Однако устанавливаемые файлы сохраняют свою относительную структуру каталогов, а любые встроенные имена файлов не будут изменены.
Вы не должны устанавливать значение DESTDIR в вашем файле Makefile; тогда файлы будут устанавливаться по умолчанию в ожидаемые места. Кроме того, установка DESTDIR не должна изменять работу программного обеспечения каким-либо образом, поэтому её значение не должно включаться в содержимое какого-либо файла.
Поддержка DESTDIR обычно используется при создании пакетов. Она также полезна пользователям, которые хотят понять, куда конкретный пакет установит файлы, и для пользователей, которые обычно не имеют разрешений на установку в защищённые области, для того чтобы собирать и устанавливать программы до получения соответствующих разрешений. Наконец, она может быть полезна с инструментами, такими как stow, где код устанавливается в одном месте, но должен отображаться как установленный в другом месте с помощью символических ссылок или специальных операций монтирования. Таким образом, мы настоятельно рекомендуем, чтобы пакеты GNU поддерживали DESTDIR, хотя это и не является абсолютным требованием.
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/DESTDIR.html