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 theDESTINATIONoptions ofinstall()commands for the corresponding file type.
CMAKE_INSTALL_FULL_<dir>
The absolute path generated from the correspondingCMAKE_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:
- 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 (liborlib64orlib/<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.
Special Cases¶
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) - Set the given variable - absvarto 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.
