5 makefile build configure build-system build-settings
$(DESTDIR)
有人可以解释一下构建系统中变量的用途吗?我的意思是我知道它指向当前安装的软件包的临时目录,但我无法想象它的实际用途是什么。
为了澄清,我知道什么--prefix
是选项,例如,如果我们指向 buldsystem like ./configure --prefix="/usr"
all the package's files will own 、/usr
like等等,但在 Makefiles 中我还看到了以下结构:/usr/lib
/usr/share
$(DESTDIR)/$(prefix)
Run Code Online (Sandbox Code Playgroud)
这样做的目的是什么?简而言之,两者的使用和使用时间DESTDIR
有区别吗?prefix
是的,在某些环境中,存在非常重要的差异。
该前缀旨在成为一切完成后将安装(或看似安装)软件包的位置。例如,如果包中的任何位置都有硬编码路径,它们将基于前缀路径(当然,出于多种原因,我们都希望包避免硬编码路径)。
DESTDIR 允许人们实际将内容安装在实际前缀之外的其他位置:DESTDIR 被添加到所有前缀值之前,以便安装位置与最终位置具有完全相同的目录结构/布局,但植根于/
.
这对于各种原因都很有用。一个例子是GNU stow等工具,它允许同时安装多个实例并轻松控制。其他示例是使用 RPM 或 DEB 创建包文件:安装包后,您希望将其解压到根目录,但为了创建包,您需要将其安装在其他位置。
其他人使用它有自己的原因:基本上这一切都归结为 DESTDIR 用于为安装创建“暂存区域”,而不是实际安装到最终位置。
ETC。