GNUInstallDirs¶
定义 GNU 标准安装目录
提供安装目录变量,如 GNU 编码标准 中所定义。
结果变量¶
包含此模块会定义以下变量
CMAKE_INSTALL_<dir>
给定类型的文件目标。此值可以传入
DESTINATION
install()
命令的选项,用于指定相应文件类型。它应该是相对于安装前缀的路径,以便可以将其转换成可重定位的绝对路径。虽然允许使用绝对路径,但它们不推荐使用,因为它们不能在
cmake --install
命令的--prefix
选项或cpack
安装器生成器中使用。特别是,无需通过添加前缀CMAKE_INSTALL_PREFIX
来使路径成为绝对路径;如果 DESTINATION 是相对路径,则会默认使用此前缀。
CMAKE_INSTALL_FULL_<dir>
从相应的
CMAKE_INSTALL_<dir>
值生成绝对路径。如果此值不是绝对路径,则通常会通过添加CMAKE_INSTALL_PREFIX
变量的值来构建绝对路径。但是,有一些 特殊情况,如下所述。这些变量不应在
install()
命令中使用,因为它们不能在cmake --install
命令的--prefix
选项或cpack
安装器生成器中使用。
其中,<dir>
是以下项之一
BINDIR
用户可执行文件(
bin
)SBINDIR
系统管理员可执行文件(
sbin
)LIBEXECDIR
程序可执行文件(
libexec
)SYSCONFDIR
只读单机数据(
etc
)SHAREDSTATEDIR
可修改的与架构无关的数据(
com
)LOCALSTATEDIR
可修改的单机数据(
var
)RUNSTATEDIR
在 3.9 版本中添加:运行时变量数据 (
LOCALSTATEDIR/run
)LIBDIR
目标代码库 (
lib
或lib64
)在 Debian 上,当
CMAKE_INSTALL_PREFIX
为/usr
时,可能是lib/<multiarch-tuple>
。INCLUDEDIR
C 头文件 (
include
)OLDINCLUDEDIR
非 gcc 的 C 头文件 (
/usr/include
)DATAROOTDIR
只读独立于架构的数据根 (
share
)DATADIR
只读独立于架构的数据 (
DATAROOTDIR
)INFODIR
信息文档 (
DATAROOTDIR/info
)LOCALEDIR
取决于语言环境的数据 (
DATAROOTDIR/locale
)MANDIR
man 文档 (
DATAROOTDIR/man
)DOCDIR
文档根 (
DATAROOTDIR/doc/PROJECT_NAME
)
如果包含方不定义值,将使用上所示的默认值,且该值将出现在缓存中,以便用户编辑。
特殊情况¶
在 3.4 版本中添加。
以下 CMAKE_INSTALL_PREFIX
值为特殊值
/
对于非
SYSCONFDIR
、LOCALSTATEDIR
和RUNSTATEDIR
的<dir>
,CMAKE_INSTALL_<dir>
的值以usr/
为前缀,前提是并未将其用户指定为绝对路径。例如,INCLUDEDIR
值include
变为usr/include
。这是 GNU 编码标准 所必需的,该标准陈述构建完整的 GNU 系统时,前缀将为空且
/usr
将是/
的符号链接。
/usr
对于等于
SYSCONFDIR
、LOCALSTATEDIR
或RUNSTATEDIR
的<dir>
,CMAKE_INSTALL_FULL_<dir>
的计算方法是,如果并未将其用户指定为绝对路径,则仅在前缀/
到CMAKE_INSTALL_<dir>
的值前面。例如,SYSCONFDIR
值etc
变为/etc
。这是 GNU 编码标准 所必需的。
/opt/...
对于
<dir>
等于SYSCONFDIR
、LOCALSTATEDIR
或RUNSTATEDIR
,如果CMAKE_INSTALL_<dir>
未被用户指定为绝对路径,则CMAKE_INSTALL_FULL_<dir>
通过追加前缀到CMAKE_INSTALL_<dir>
的值来计算。例如,SYSCONFDIR
值etc
变为/etc/opt/...
。这是由 文件系统分层标准 定义的。此行为不适用于
/opt/homebrew/...
下的路径。
宏¶
- GNUInstallDirs_get_absolute_install_dir¶
GNUInstallDirs_get_absolute_install_dir(absvar var dirname)
在版本 3.7 中添加。
将给定的变量
absvar
设置为变量var
中包含的绝对路径。这是为了允许计算绝对路径,并考虑上面记录的所有特殊情况。虽然此宏用于计算各种CMAKE_INSTALL_FULL_<dir>
变量,但它公开提供,以允许创建其他路径变量的用户在必要时使用相同的逻辑来计算绝对路径。dirname
是要获取的目录名,例如BINDIR
。在版本 3.20 中更改:添加了
<dirname>
参数。以前版本的 CMake 通过变量${dir}
传递此值。