GNUInstallDirs¶
Define GNU standard installation directories
Provides install directory variables as defined by the GNU Coding Standards.
Result Variables¶
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
DESTINATIONoptions ofinstall()commands for the corresponding file type. It should typically be a path relative to the installation prefix so that it can be converted to an absolute path in a relocatable way (seeCMAKE_INSTALL_FULL_<dir>). However, an absolute path is also allowed.
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 theCMAKE_INSTALL_PREFIXvariable. However, there are some special cases as documented below.
where <dir> is one of:
BINDIRuser executables (
bin)SBINDIRsystem admin executables (
sbin)LIBEXECDIRprogram executables (
libexec)SYSCONFDIRread-only single-machine data (
etc)SHAREDSTATEDIRmodifiable architecture-independent data (
com)LOCALSTATEDIRmodifiable single-machine data (
var)RUNSTATEDIRNew in version 3.9: run-time variable data (
LOCALSTATEDIR/run)LIBDIRobject code libraries (
liborlib64)On Debian, this may be
lib/<multiarch-tuple>whenCMAKE_INSTALL_PREFIXis/usr.INCLUDEDIRC header files (
include)OLDINCLUDEDIRC header files for non-gcc (
/usr/include)DATAROOTDIRread-only architecture-independent data root (
share)DATADIRread-only architecture-independent data (
DATAROOTDIR)INFODIRinfo documentation (
DATAROOTDIR/info)LOCALEDIRlocale-dependent data (
DATAROOTDIR/locale)MANDIRman documentation (
DATAROOTDIR/man)DOCDIRdocumentation 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.
Special Cases¶
New in version 3.4.
The following values of CMAKE_INSTALL_PREFIX are special:
/
For
<dir>other than theSYSCONFDIR,LOCALSTATEDIRandRUNSTATEDIR, the value ofCMAKE_INSTALL_<dir>is prefixed withusr/if it is not user-specified as an absolute path. For example, theINCLUDEDIRvalueincludebecomesusr/include. This is required by the GNU Coding Standards, which state:When building the complete GNU system, the prefix will be empty and
/usrwill be a symbolic link to/.
/usr
For
<dir>equal toSYSCONFDIR,LOCALSTATEDIRorRUNSTATEDIR, theCMAKE_INSTALL_FULL_<dir>is computed by prepending just/to the value ofCMAKE_INSTALL_<dir>if it is not user-specified as an absolute path. For example, theSYSCONFDIRvalueetcbecomes/etc. This is required by the GNU Coding Standards.
/opt/...
For
<dir>equal toSYSCONFDIR,LOCALSTATEDIRorRUNSTATEDIR, theCMAKE_INSTALL_FULL_<dir>is computed by appending the prefix to the value ofCMAKE_INSTALL_<dir>if it is not user-specified as an absolute path. For example, theSYSCONFDIRvalueetcbecomes/etc/opt/.... This is defined by the Filesystem Hierarchy Standard.
Macros¶
-
GNUInstallDirs_get_absolute_install_dir¶ GNUInstallDirs_get_absolute_install_dir(absvar var dirname)
New in version 3.7.
Set the given variable
absvarto the absolute path contained within the variablevar. 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 variousCMAKE_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.dirnameis the directory name to get, e.g.BINDIR.Changed in version 3.20: Added the
<dirname>parameter. Previous versions of CMake passed this value through the variable${dir}.