Spec-Zone.ru › GNU Make

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

Spec-Zone.ru

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