LINUX.ORG.RU

DESTDIR в Makefile. Документация GNU и сложившаяся практика.


0

0

Объясните, пожалуйста, как обычно используют DESTDIR в мэйкфайлах? На сайте GNU написано, что следует задавать его пустым, чтобы при установке программы не в / можно было просто переопределить DESTDIR: http://www.gnu.org/prep/standards/html_node/DESTDIR.html

Наткнулся в одной программе на такое:

DESTDIR=/usr/local
BIN=$(DESTDIR)/bin/
STEADPATH=$(DESTDIR)/share/stead
THEMESPATH=$(STEADPATH)/themes
GAMESPATH=$(STEADPATH)/games
ICONPATH=$(DESTDIR)/share/pixmaps

Правильно ли это?

★★★★★

Правильно, но можно и ещё правильнее - не задавать его. Тогда можно будет сделать

make DESTDIR=/я/сказал/сюда install

B тогда всё поставится в директорию /я/сказал/сюда. Часто бывает полезно.

devinull ★★
()

Это писец.

Надо так:
PREFIX ?= /usr/local
DESTDIR=
BIN=$(DESTDIR)$(PREFIX)/bin/
STEADPATH=$(DESTDIR)$(PREFIX)/share/stead
THEMESPATH=$(DESTDIR)$(STEADPATH)/themes
GAMESPATH=$(DESTDIR)$(STEADPATH)/games
ICONPATH=$(DESTDIR)$(PREFIX)/share/pixmaps

ip1981 ☆☆
()
Ответ на: комментарий от devinull

> Правильно, но можно и ещё правильнее - не задавать его.
> Тогда можно будет сделать

> make DESTDIR=/я/сказал/сюда install


Об этом и говорю: если в файле стоит
DESTDIR=
make DESTDIR=/я/сказал/сюда install тоже ставит в /я/сказал/сюда.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Да вообще-то не нужен. Означает, что надо задать указанное значение, если уже не задано другое. Современные make и без этого перекрывают значения переменных, если они указаны в командной строке.

ip1981 ☆☆
()
Ответ на: комментарий от ip1981

>Надо так:
>PREFIX ?= /usr/local

>DESTDIR=

>BIN=$(DESTDIR)$(PREFIX)/bin/

>STEADPATH=$(DESTDIR)$(PREFIX)/share/stead

>THEMESPATH=$(DESTDIR)$(STEADPATH)/themes

>GAMESPATH=$(DESTDIR)$(STEADPATH)/games

>ICONPATH=$(DESTDIR)$(PREFIX)/share/pixmaps


не забываем что DESTDIR нужно использовать только в путях для инсталляции файлов, но не в том, что может использоваться в приложении.

Т.е.
THEMESPATH=$(DESTDIR)$(STEADPATH)/themes
CFLAGS+=-DTHEMESPATH=\"$(THEMESPATH)\"

нельзя

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Спасибо. Это очевидно, но напомнить лишний раз оказалось полезно.

question4 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.