Spec-Zone.ru › CMake

GNUInstallDirs

Этот модуль определяет переменные каталогов установки в соответствии с Стандартами кодирования GNU и предоставляет команду для вычисления абсолютных путей, связанных с установкой.

Загрузите этот модуль в проекте CMake следующим образом:

include(GNUInstallDirs)

Переменные результата

Подключение этого модуля определяет следующие переменные:

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)

Изменено в версии 4.1: Если CMAKE_INSTALL_PREFIX попадает в особые случаи, по умолчанию используются соответствующие варианты абсолютных путей, описанные там. См. политику CMP0192.

SHAREDSTATEDIR

изменяемые данные, не зависящие от архитектуры (com)

LOCALSTATEDIR

изменяемые данные, относящиеся к одной машине (var)

Изменено в версии 4.1: Если CMAKE_INSTALL_PREFIX попадает в особые случаи, по умолчанию используются соответствующие варианты абсолютных путей, описанные там. См. политику CMP0192.

RUNSTATEDIR

данные переменных времени выполнения (LOCALSTATEDIR/run)

Добавлено в версии 3.9.

Изменено в версии 4.1: Если CMAKE_INSTALL_PREFIX попадает в особые случаи, по умолчанию используются соответствующие варианты абсолютных путей, описанные там. См. политику CMP0192.

LIBDIR

библиотеки объектного кода (lib или lib64)

В Linux, если выполняется не кросс-компиляция, по умолчанию используется зависящий от архитектуры каталог библиотек дистрибутива, например lib или lib64. В Debian это может быть lib/<multiarch-tuple>, если CMAKE_INSTALL_PREFIX имеет значение /usr. При кросс-компиляции по умолчанию используется lib.

Примечание

Если во время установки параметру --prefix задан альтернативный префикс установки, особый случай с кортежем нескольких архитектур определяется на основе значения CMAKE_INSTALL_PREFIX, заданного на этапе конфигурации, а не на основе значения альтернативного префикса.

INCLUDEDIR

заголовочные файлы C (include)

OLDINCLUDEDIR

заголовочные файлы C для компиляторов, отличных от gcc (/usr/include)

DATAROOTDIR

корневой каталог данных только для чтения, не зависящих от архитектуры (share)

DATADIR

данные только для чтения, не зависящие от архитектуры (DATAROOTDIR)

Для DATADIR и DATAROOTDIR предусмотрена отдельная обработка, чтобы DATADIR можно было настроить для специфичных для проекта файлов данных, а DATAROOTDIR оставался без изменений для стандартных расположений данных, не зависящих от архитектуры: INFODIR, LOCALEDIR, MANDIR и DOCDIR.

INFODIR

документация info (DATAROOTDIR/info)

LOCALEDIR

данные, зависящие от локали (DATAROOTDIR/locale)

MANDIR

документация man (DATAROOTDIR/man)

DOCDIR

корневой каталог документации (DATAROOTDIR/doc/PROJECT_NAME)

Если подключающий модуль не задаёт значение, будет использовано указанное выше значение по умолчанию, которое появится в кэше и будет доступно для изменения пользователем.

Если используется значение по умолчанию для CMAKE_INSTALL_<dir> и CMAKE_INSTALL_PREFIX изменяется, будет рассчитано новое значение по умолчанию на основе нового значения CMAKE_INSTALL_PREFIX. Использование --prefix в cmake --install не изменяет эти значения.

Особые случаи

Добавлено в версии 3.4.

Следующие значения CMAKE_INSTALL_PREFIX являются особыми:

/

Для <dir>, отличных от SYSCONFDIR, LOCALSTATEDIR и RUNSTATEDIR, значение CMAKE_INSTALL_<dir> получает префикс usr/, если пользователь не задал его как абсолютный путь. Например, значение INCLUDEDIR include становится usr/include. Это требование Стандартов кодирования GNU, в которых указано:

При сборке полной системы GNU префикс будет пустым, а /usr будет символической ссылкой на /.

Изменено в версии 4.1: Переменные CMAKE_INSTALL_<dir> кэшируются с префиксом usr/. См. политику CMP0193.

/usr

Если <dir> равно SYSCONFDIR, LOCALSTATEDIR или RUNSTATEDIR, значение CMAKE_INSTALL_FULL_<dir> вычисляется добавлением в начало значения CMAKE_INSTALL_<dir> только /, если оно ещё не является абсолютным путём. Например, значение SYSCONFDIR etc становится /etc. Это требование Стандартов кодирования GNU.

Изменено в версии 4.1: Значениями по умолчанию CMAKE_INSTALL_<dir> для <dir>, равного SYSCONFDIR, LOCALSTATEDIR и RUNSTATEDIR, являются абсолютные пути /etc, /var и /var/run соответственно. См. политику CMP0192.

/opt/...

Если <dir> равно SYSCONFDIR, LOCALSTATEDIR или RUNSTATEDIR, значение CMAKE_INSTALL_FULL_<dir> вычисляется добавлением префикса в конец значения CMAKE_INSTALL_<dir>, если оно ещё не является абсолютным путём. Например, значение SYSCONFDIR etc становится /etc/opt/.... Это определено Стандартом иерархии файловой системы.

Это поведение не применяется к путям внутри /opt/homebrew/....

Изменено в версии 4.1: Значениями по умолчанию CMAKE_INSTALL_<dir> для <dir>, равного SYSCONFDIR, LOCALSTATEDIR и RUNSTATEDIR, являются абсолютные пути /etc/opt/..., /var/opt/... и /var/run/opt/... соответственно. См. политику CMP0192.

Примечание

Если во время установки параметру --prefix задан альтернативный префикс установки, эти особые случаи определяются на основе значения CMAKE_INSTALL_PREFIX, заданного на этапе конфигурации, а не на основе значения альтернативного префикса.

Команды

Этот модуль предоставляет следующую команду:

GNUInstallDirs_get_absolute_install_dir

Добавлено в версии 3.7.

Вычисляет абсолютный путь установки на основе заданного относительного пути:

GNUInstallDirs_get_absolute_install_dir(<result-var> <input-var> <dir>)

Эта команда берёт значение переменной <input-var> и вычисляет её абсолютный путь в соответствии со стандартными каталогами установки GNU. Если входной путь относительный, в его начало добавляется CMAKE_INSTALL_PREFIX; также путь может быть скорректирован с учётом описанных выше особых случаев.

Аргументы:

<result-var>

Имя переменной, в которой сохраняется вычисленный абсолютный путь.

<input-var>

Имя переменной, содержащей путь, который будет использоваться для вычисления соответствующего абсолютного пути установки.

Изменено в версии 4.1: Эта переменная больше не изменяется. См. политику CMP0193. В предыдущих версиях CMake эта команда изменяла значение переменной <input-var> с учётом особых случаев.

<dir>

Добавлено в версии 3.20.

Имя типа каталога, например SYSCONFDIR, LOCALSTATEDIR, RUNSTATEDIR и т. д. Этот аргумент определяет, применяются ли особые случаи при вычислении абсолютного пути.

Изменено в версии 3.20: До появления аргумента <dir> тип каталога можно было задать, установив переменную dir перед вызовом этой команды. Начиная с CMake 3.20, если аргумент <dir> задан явно, переменная dir игнорируется.

Хотя этот модуль использует команду внутри себя для вычисления переменных CMAKE_INSTALL_FULL_<dir>, она также доступна пользователям для создания дополнительных пользовательских переменных путей установки и вычисления абсолютных путей там, где это необходимо, с использованием той же логики.

См. также

  • Команду install().

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API