Spec-Zone.ru › CMake 3.29

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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/envvar/CMAKE_INSTALL_MODE.html

Spec-Zone.ru

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