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
info 文档 (
DATAROOTDIR/info
)LOCALEDIR
与区域设置相关的数据 (
DATAROOTDIR/locale
)MANDIR
man 文档 (
DATAROOTDIR/man
)DOCDIR
文档根目录 (
DATAROOTDIR/doc/PROJECT_NAME
)
如果包含器未定义值,则将使用上面显示的默认值,并且该值将显示在缓存中以供用户编辑。
特殊情况¶
3.4 版本新增。
以下 CMAKE_INSTALL_PREFIX
的值是特殊的
/
对于
<dir>
,除了SYSCONFDIR
、LOCALSTATEDIR
和RUNSTATEDIR
,如果CMAKE_INSTALL_<dir>
的值未被用户指定为绝对路径,则会添加前缀usr/
。 例如,INCLUDEDIR
值include
变为usr/include
。 这是 GNU 编码标准 所要求的,该标准声明当构建完整的 GNU 系统时,前缀将为空,并且
/usr
将是/
的符号链接。
/usr
对于等于
SYSCONFDIR
、LOCALSTATEDIR
或RUNSTATEDIR
的<dir>
,如果CMAKE_INSTALL_<dir>
的值未被用户指定为绝对路径,则CMAKE_INSTALL_FULL_<dir>
通过仅预先添加/
到该值来计算。 例如,SYSCONFDIR
值etc
变为/etc
。 这是 GNU 编码标准 所要求的。
/opt/...
对于等于
SYSCONFDIR
、LOCALSTATEDIR
或RUNSTATEDIR
的<dir>
,如果CMAKE_INSTALL_<dir>
的值未被用户指定为绝对路径,则CMAKE_INSTALL_FULL_<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}
传递此值。