Spec-Zone.ru › CMake 3.22

CMAKE_INSTALL_MODE

Новое в версии 3.22.

Это переменная окружения CMake Переменная среды. Её начальное значение берётся из переменной окружения вызывающего процесса.

Переменная окружения CMAKE_INSTALL_MODE позволяет пользователям использовать CMake в альтернативном режиме file(INSTALL) и install().

По умолчанию при установке происходит копирование исходного файла из каталога исходников в каталог назначения. Данная переменная позволяет пользователю переопределить это поведение, заставив CMake создавать символические ссылки вместо копирования.

Сценарии использования

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

  • Экономия дискового пространства, так как файлы не нужно дублировать.
  • Изменения исходного файла, на который указывает символическая ссылка, видны в каталоге назначения без необходимости повторного запуска этапа установки.
  • Редактирование через ссылку в каталоге назначения изменяет исходный файл ссылки. Это может быть полезно при работе с иерархией проекта CMake, например, с использованием ExternalProject, и желательно сохранение согласованности навигации по исходникам и рефакторинга между проектами.

Допустимые значения

Для CMAKE_INSTALL_MODE разрешены следующие значения:

COPY, empty or unset

Дублировать файл в каталоге назначения. Это поведение по умолчанию.

ABS_SYMLINK

Создать абсолютную символическую ссылку на исходный файл в каталоге назначения. Прерваться с ошибкой, если ссылку создать невозможно.

ABS_SYMLINK_OR_COPY

Как ABS_SYMLINK, но перейти к молчаливому копированию, если символическую ссылку создать нельзя.

REL_SYMLINK

Создать относительную символическую ссылку на исходный файл в каталоге назначения. Прерваться с ошибкой, если ссылку создать невозможно.

REL_SYMLINK_OR_COPY

Как REL_SYMLINK, но перейти к молчаливому копированию, если символическую ссылку создать нельзя.

SYMLINK

Попробовать так, как если бы через REL_SYMLINK, и перейти к ABS_SYMLINK, если со ссылкой на файл нельзя выразить относительный путь. Прерваться с ошибкой, если ссылку создать невозможно.

SYMLINK_OR_COPY

Как SYMLINK, но перейти к молчаливому копированию, если символическую ссылку создать нельзя.

Примечание

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

Когда устанавливать переменную окружения

Для того чтобы переменная окружения вступила в силу, её необходимо установить в правильной фазе сборки.

  • Если проект вызывает file(INSTALL) напрямую, переменную окружения нужно установить во время фазы конфигурации.
  • Чтобы применить её к install(), переменную окружения нужно установить во время установки. Это может быть во время сборки, если используются цели сборки install или package, или отдельно от сборки, при вызове инструмента установки или выполнения cpack из командной строки.
  • При использовании ExternalProject, это может потребоваться во время фазы сборки, так как собственные этапы конфигурации, сборки и установки внешнего проекта будут выполняться во время фазы сборки основного проекта.

Учитывая вышесказанное, рекомендуется устанавливать переменную окружения последовательно на всех этапах (конфигурация, сборка и установка).

Ограничения

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

  • CMAKE_INSTALL_MODE влияет только на файлы, а не на каталоги.
  • Символические ссылки недоступны на всех платформах.
  • Способ взаимодействия этой переменной окружения с этапом установки ExternalProject более сложен. Более подробную информацию см. в документации данного модуля.
  • Символическая ссылка связывает каталог назначения с каталогом источника постоянным образом. Запись в любой из двух объектов влияет на оба объекта файловой системы. Это в отличие от обычного поведения установки, которая копирует файлы, как они были на момент выполнения установки, без какой-либо долговременной связи между исходным и целевым каталогами установки.
  • Сочетание CMAKE_INSTALL_MODE с IOS_INSTALL_COMBINED не поддерживается.
  • Изменение CMAKE_INSTALL_MODE от предыдущей версии может привести к непредсказуемым результатам. Переход от режима без создания символических ссылок к режиму создания символических ссылок приведет к удалению любого предыдущего файла в каталоге назначения, но обратное неверно. После создания символической ссылки в каталоге назначения, даже если вы переключитесь на режим без создания символических ссылок, символическая ссылка останется в каталоге назначения и не будет заменена фактическим файлом.

© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/envvar/CMAKE_INSTALL_MODE.html

Spec-Zone.ru

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