GNU 安装目录¶
定义 GNU 标准安装目录
提供由“GNU 编码标准”定义的安装目录变量。
结果变量¶
包含此模块定义了以下变量:
CMAKE_INSTALL_<目录>
给定类型文件的目的地。该值可以传递给相应文件类型的
install()命令的DESTINATION选项。它通常应该是相对于安装前缀的路径,以便可以以可重定位的方式将其转换为绝对路径(请参阅CMAKE_INSTALL_FULL_<dir>)。但是,也允许使用绝对路径。
CMAKE_INSTALL_FULL_<目录>
从相应的
CMAKE_INSTALL_<dir>值生成的绝对路径。如果该值还不是绝对路径,则通常通过在CMAKE_INSTALL_PREFIX变量的值前添加绝对路径来构造绝对路径。但是,有一些“特殊情况”_,如下所述。
其中 <dir> 是以下之一:
BINDIR用户可执行文件(
bin)SBINDIR系统管理员可执行文件(
sbin)LIBEXECDIR程序可执行文件(
libexec)SYSCONFDIR只读单机数据(
etc)共享状态目录可修改的独立于架构的数据(
com)本地状态目录可修改的单机数据(
var)RUNSTATEDIR在 3.9 版本加入: 运行时变量数据(
LOCALSTATEDIR/run)LIBDIR目标代码库(
lib或lib64)在 Debian 上,这可能是
lib/<multiarch-tuple>当CMAKE_INSTALL_PREFIX是/usr时。包括目录C 头文件(
include)OLDINCLUDEDIR非 gcc 的 C 头文件(
/usr/include)数据根目录只读架构独立数据根(
share)数据目录只读架构独立数据(
DATAROOTDIR)INFODIR信息文档(
DATAROOTDIR/info)本地目录区域设置相关数据(
DATAROOTDIR/locale)曼迪尔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 编码标准`_ 所要求的。
/选择/...
对于
<dir>等于SYSCONFDIR、LOCALSTATEDIR或RUNSTATEDIR,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}”传递这个值。