Define GNU standard installation directories
Provides install directory variables as defined by the GNU Coding Standards.
Inclusion of this module defines the following variables:
CMAKE_INSTALL_<dir>
Destination for files of a given type. This value may be passed to the DESTINATION
options of install()
commands for the corresponding file type.
CMAKE_INSTALL_FULL_<dir>
The absolute path generated from the corresponding CMAKE_INSTALL_<dir>
value. If the value is not already an absolute path, an absolute path is constructed typically by prepending the value of the CMAKE_INSTALL_PREFIX
variable. However, there are some special cases as documented below.
where <dir>
is one of:
BINDIR
user executables (bin
)
SBINDIR
system admin executables (sbin
)
LIBEXECDIR
program executables (libexec
)
SYSCONFDIR
read-only single-machine data (etc
)
SHAREDSTATEDIR
modifiable architecture-independent data (com
)
LOCALSTATEDIR
modifiable single-machine data (var
)
RUNSTATEDIR
run-time variable data (LOCALSTATEDIR/run
)
LIBDIR
object code libraries (lib
or lib64
or lib/<multiarch-tuple>
on Debian)
INCLUDEDIR
C header files (include
)
OLDINCLUDEDIR
C header files for non-gcc (/usr/include
)
DATAROOTDIR
read-only architecture-independent data root (share
)
DATADIR
read-only architecture-independent data (DATAROOTDIR
)
INFODIR
info documentation (DATAROOTDIR/info
)
LOCALEDIR
locale-dependent data (DATAROOTDIR/locale
)
MANDIR
man documentation (DATAROOTDIR/man
)
DOCDIR
documentation root (DATAROOTDIR/doc/PROJECT_NAME
)
If the includer does not define a value the above-shown default will be used and the value will appear in the cache for editing by the user.
The following values of CMAKE_INSTALL_PREFIX
are special:
/
For <dir>
other than the SYSCONFDIR
, LOCALSTATEDIR
and RUNSTATEDIR
, the value of CMAKE_INSTALL_<dir>
is prefixed with usr/
if it is not user-specified as an absolute path. For example, the INCLUDEDIR
value include
becomes usr/include
. This is required by the GNU Coding Standards, which state:
When building the complete GNU system, the prefix will be empty and /usr
will be a symbolic link to /
.
/usr
For <dir>
equal to SYSCONFDIR
, LOCALSTATEDIR
or RUNSTATEDIR
, the CMAKE_INSTALL_FULL_<dir>
is computed by prepending just /
to the value of CMAKE_INSTALL_<dir>
if it is not user-specified as an absolute path. For example, the SYSCONFDIR
value etc
becomes /etc
. This is required by the GNU Coding Standards.
/opt/...
For <dir>
equal to SYSCONFDIR
, LOCALSTATEDIR
or RUNSTATEDIR
, the CMAKE_INSTALL_FULL_<dir>
is computed by appending the prefix to the value of CMAKE_INSTALL_<dir>
if it is not user-specified as an absolute path. For example, the SYSCONFDIR
value etc
becomes /etc/opt/...
. This is defined by the Filesystem Hierarchy Standard.
GNUInstallDirs_get_absolute_install_dir
GNUInstallDirs_get_absolute_install_dir(absvar var)
Set the given variable absvar
to the absolute path contained within the variable var
. This is to allow the computation of an absolute path, accounting for all the special cases documented above. While this macro is used to compute the various CMAKE_INSTALL_FULL_<dir>
variables, it is exposed publicly to allow users who create additional path variables to also compute absolute paths where necessary, using the same logic.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/module/GNUInstallDirs.html