GNUInstallDirs
Определение стандартных каталогов установки GNU
Предоставляет переменные каталогов установки, как определено в Стандартах кодирования GNU.
Переменные результатов
Включение этого модуля определяет следующие переменные:
CMAKE_INSTALL_<dir>
Назначение для файлов заданного типа. Это значение может быть передано в параметры DESTINATION команд install() для соответствующего типа файлов. Оно должно быть путём, относительным к префиксу установки, чтобы его можно было преобразовать в абсолютный путь переносимым способом.
Хотя абсолютные пути разрешены, они не рекомендуются, так как они не работают с параметром --prefix команды cmake --install, или с генераторами установщиков cpack. В частности, нет необходимости делать пути абсолютными, добавляя CMAKE_INSTALL_PREFIX; этот префикс используется по умолчанию, если DESTINATION является относительным путём.
CMAKE_INSTALL_FULL_<dir>
Абсолютный путь, сгенерированный из соответствующего значения CMAKE_INSTALL_<dir>. Если значение не является абсолютным путём, абсолютный путь обычно строится путём добавления значения переменной CMAKE_INSTALL_PREFIX в начало. Однако существуют некоторые исключительные случаи, как описано ниже.
Эти переменные не следует использовать в командах install(), так как они не работают с параметром --prefix команды cmake --install, или с генераторами установщиков cpack.
где <dir> является одним из:
-
BINDIR -
пользовательские исполняемые файлы (
bin) -
SBINDIR -
исполняемые файлы системного администратора (
sbin) -
LIBEXECDIR -
исполняемые файлы программы (
libexec) -
SYSCONFDIR -
только для чтения данные одной машины (
etc) -
SHAREDSTATEDIR -
изменяемые данные, независимые от архитектуры (
com) -
LOCALSTATEDIR -
изменяемые данные одной машины (
var) -
RUNSTATEDIR -
Новое в версии 3.9: данные переменной времени выполнения (
LOCALSTATEDIR/run) -
LIBDIR -
библиотеки объектного кода (
libилиlib64)В Debian, это может быть
lib/<multiarch-tuple>когдаCMAKE_INSTALL_PREFIXравно/usr. -
INCLUDEDIR -
заголовочные файлы C (
include) -
OLDINCLUDEDIR -
заголовочные файлы C для non-gcc (
/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
Для <dir> равного SYSCONFDIR, RUNSTATEDIR или LOCALSTATEDIR, CMAKE_INSTALL_FULL_<dir> вычисляется путём добавления только / к значению CMAKE_INSTALL_<dir>, если оно не указано как абсолютный путь. Например, значение SYSCONFDIR etc становится /etc. Это требуется Стандартами кодирования GNU.
/opt/...
Для <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}.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.30/module/GNUInstallDirs.html