CPackComponent
Настройка компонентов для установочных файлов и исходных пакетов.
Введение
Этот модуль автоматически подключается CPack.
Некоторые установочные файлы (особенно графические) генерируемые CPack позволяют пользователю выбирать отдельные компоненты приложения для установки. Этот модуль позволяет разработчикам настроить упаковку таких компонентов.
Содержание назначается компонентам через аргумент COMPONENT команды CMake install(). Компоненты могут быть снабжены понятными именами и описаниями, зависимостями между компонентами и т.д., и сгруппированы различными способами для настройки конечного установщика, используя описанные ниже команды.
Для задания различных группировок для различных генераторов CPack используйте CPACK_PROJECT_CONFIG_FILE.
Переменные
Следующие переменные влияют на упаковку, специфичную для компонентов:
-
CPACK_COMPONENTS_ALL -
Список компонентов для установки.
Значение по умолчанию этой переменной вычисляется CPack и содержит все компоненты, определенные проектом. Пользователь может установить её, чтобы включить только указанные компоненты.
Вместо указания всех необходимых компонентов можно получить список всех определенных компонентов и затем удалить нежелательные из списка. Команда
get_cmake_property()может быть использована для получения свойстваCOMPONENTS, а затем командаlist(REMOVE_ITEM)может быть использована для удаления нежелательных. Например, чтобы использовать все определенные компоненты, кромеfooиbar:get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS) list(REMOVE_ITEM CPACK_COMPONENTS_ALL "foo" "bar")
-
CPACK_<GENNAME>_COMPONENT_INSTALL -
Включить/выключить установку компонента для генератора CPack <GENNAME>.
Каждый генератор CPack (RPM, DEB, ARCHIVE, NSIS, DMG и т.д.) имеет поведение по умолчанию. Например, RPM создает монолитный файл, в то время как NSIS создает компонентный. Можно изменить поведение по умолчанию, установив эту переменную в 0/1 или ВЫКЛ/ВКЛ.
-
CPACK_COMPONENTS_GROUPING -
Указать, как группируются компоненты для многопакетных генераторов CPack, поддерживающих компоненты.
Некоторые генераторы, такие как RPM или ARCHIVE (TGZ, ZIP, ...), могут генерировать несколько файлов пакетов, когда есть компоненты, в зависимости от значения этой переменной:
- ONE_PER_GROUP (по умолчанию): создать один пакет на каждую группу компонентов
- IGNORE: создать один пакет на каждый компонент (игнорировать группы)
- ALL_COMPONENTS_IN_ONE: создать один пакет со всеми запрошенными компонентами
-
CPACK_COMPONENT_<compName>_DISPLAY_NAME -
Имя, отображаемое для компонента.
-
CPACK_COMPONENT_<compName>_DESCRIPTION -
Описание компонента.
-
CPACK_COMPONENT_<compName>_GROUP -
Группа компонента.
-
CPACK_COMPONENT_<compName>_DEPENDS -
Зависимости (список компонентов), от которых зависит этот компонент.
-
CPACK_COMPONENT_<compName>_HIDDEN -
Истина, если этот компонент скрыт от пользователя.
-
CPACK_COMPONENT_<compName>_REQUIRED -
Истина, если этот компонент необходим.
-
CPACK_COMPONENT_<compName>_DISABLED -
Истина, если этот компонент по умолчанию не выбран для установки.
Команды
Добавить компонент
-
cpack_add_component
Описать компонент установки.
cpack_add_component(compname
[DISPLAY_NAME name]
[DESCRIPTION description]
[HIDDEN | REQUIRED | DISABLED ]
[GROUP group]
[DEPENDS comp1 comp2 ... ]
[INSTALL_TYPES type1 type2 ... ]
[DOWNLOADED]
[ARCHIVE_FILE filename]
[PLIST filename])
compname — это имя компонента установки, как определено аргументом COMPONENT одной или нескольких команд CMake install(). С помощью команды cpack_add_component можно установить имя, описание и другие атрибуты компонента установки. Также можно назначить компонент группе компонентов.
DISPLAY_NAME — отображаемое имя компонента, используемое в графических установщиках для отображения имени компонента. Это значение может быть любой строкой.
DESCRIPTION — расширенное описание компонента, используемое в графических установщиках для предоставления пользователю дополнительной информации о компоненте. Описания могут занимать несколько строк, используя \n в качестве разделителя строк. Обычно эти описания должны быть не более нескольких строк.
HIDDEN указывает, что этот компонент будет скрыт в графическом установщике, так что пользователь не может напрямую изменить, установлен ли он или нет.
REQUIRED указывает, что этот компонент необходим и, следовательно, всегда будет установлен. Он будет виден в графическом установщике, но его нельзя отключить. (Обычно требуемые компоненты отображаются серым цветом).
DISABLED указывает, что этот компонент должен быть отключен (не выбран) по умолчанию. Пользователь свободен выбрать этот компонент для установки, если он также не HIDDEN.
DEPENDS перечисляет компоненты, от которых зависит этот компонент. Если этот компонент выбран, каждый из перечисленных компонентов также должен быть выбран. Информация о зависимости закодирована внутри самого установщика, чтобы пользователи не могли установить несовместимые наборы компонентов.
GROUP задаёт имя группы компонентов, к которой принадлежит этот компонент. Если не указано, компонент будет самостоятельным компонентом, не относящимся ни к одной группе компонентов. Группы компонентов описаны с помощью команды cpack_add_component_group, подробное описание приведено ниже.
INSTALL_TYPES перечисляет типы установки, к которым относится этот компонент. При выборе одного из этих типов установки этот компонент будет автоматически выбран. Типы установки описаны с помощью команды cpack_add_install_type, подробное описание приведено ниже.
DOWNLOADED указывает, что этот компонент должен загружаться установщиком во время установки, а не входить в состав самого установщика. Подробнее см. команду cpack_configure_downloads.
ARCHIVE_FILE предоставляет имя архива, создаваемого CPack для загружаемых компонентов. Если не указано, CPack создаст файл с именем, основанным на CPACK_PACKAGE_FILE_NAME и имени компонента. Дополнительную информацию см. в cpack_configure_downloads.
PLIST указывает имя файла, который передаётся pkgbuild с аргументом --component-plist при использовании генератора productbuild.
Добавить группу компонентов
-
cpack_add_component_group
Описание группы связанных компонентов CPack установки.
cpack_add_component_group(groupname
[DISPLAY_NAME name]
[DESCRIPTION description]
[PARENT_GROUP parent]
[EXPANDED]
[BOLD_TITLE])
Команда cpack_add_component_group описывает группу компонентов установки, которые будут размещены вместе в списке параметров. Обычно группы компонентов позволяют пользователю выбирать/снимать отметку со всех компонентов в группе с помощью одного параметра уровня группы. Используйте группы компонентов, чтобы уменьшить сложность установщиков с многими параметрами. groupname — произвольное имя, используемое для идентификации группы в аргументе GROUP команды cpack_add_component, который используется для размещения компонента в группе. Имя группы не должно совпадать с именем какого-либо компонента.
DISPLAY_NAME — отображаемое имя группы компонентов, используемое в графических установщиках для отображения имени группы компонентов. Это значение может быть любой строкой.
DESCRIPTION — расширенное описание группы компонентов, используемое в графических установщиках для предоставления пользователю дополнительной информации о компонентах в группе. Описания могут занимать несколько строк, используя \n в качестве разделителя строк. Обычно эти описания должны быть не более нескольких строк.
PARENT_GROUP, если указано, задаёт имя родительской группы этой группы. Родительские группы используются для построения иерархии групп, предоставляя произвольную иерархию групп.
EXPANDED указывает, что по умолчанию группа должна отображаться «развёрнутой», чтобы пользователь сразу видел все компоненты в группе. В противном случае группа изначально будет отображаться как единственная запись.
BOLD_TITLE указывает, что заголовок группы должен отображаться полужирным шрифтом, чтобы привлечь внимание пользователя к группе.
Добавить тип установки
-
cpack_add_install_type
Добавление нового типа установки, содержащего набор предопределённых выборов компонентов в графический установщик.
cpack_add_install_type(typename
[DISPLAY_NAME name])
Команда cpack_add_install_type идентифицирует набор предварительно выбранных компонентов, представляющих собой типичный случай использования приложения. Например, тип установки «Разработчик» может включать приложение вместе с его заголовочными файлами и библиотеками, в то время как тип установки «Конечный пользователь» может включать только исполняемый файл приложения. Каждый компонент идентифицирует себя одним или несколькими типами установки с помощью аргумента INSTALL_TYPES команды cpack_add_component.
DISPLAY_NAME — отображаемое имя типа установки, которое обычно отображается в раскрывающемся списке в графическом установщике. Это значение может быть любой строкой.
Настроить загрузки
-
cpack_configure_downloads
Настройка CPack для загрузки выбранных компонентов во время процесса установки.
cpack_configure_downloads(site
[UPLOAD_DIRECTORY dirname]
[ALL]
[ADD_REMOVE|NO_ADD_REMOVE])
Команда cpack_configure_downloads настраивает загрузки компонентов во время установки. Для каждого загружаемого компонента CPack создаст архив, содержащий содержимое этого компонента, который должен быть загружен на указанный сайт. При выборе пользователем этого компонента для установки установщик загрузит и извлечёт компонент на месте. Эта функция полезна для создания небольших установщиков, которые загружают только запрошенные компоненты, экономя пропускную способность. Кроме того, установщики достаточно малы, чтобы они устанавливались в рамках обычного процесса установки, а кнопка «Изменить» в окне «Установка и удаление программ» Windows позволит добавлять или удалять части приложения после первоначальной установки. В Windows функциональность загружаемых компонентов требует плагина ZipDLL для NSIS, доступного по адресу:
http://nsis.sourceforge.net/ZipDLL_plug-in
На macOS установщики, которые загружают компоненты в режиме реального времени, могут быть построены и установлены только на системах с macOS 10.5 или более поздней версии.
Аргумент сайта — это URL, на котором будут храниться архивы загружаемых компонентов, например, https://cmake.org/files/v3.25/. Все архивы, созданные CPack, должны быть загружены в это место.
UPLOAD_DIRECTORY — это локальный каталог, в котором CPack будет создавать различные архивы для каждого компонента. Содержимое этого каталога должно быть загружено в место, доступное по URL, указанному в аргументе сайта. Если он опущен, CPack будет использовать каталог CPackUploads внутри каталога бинарных файлов CMake для хранения сгенерированных архивов.
Флаг ALL указывает на загрузку всех компонентов. В противном случае будут загружены только те компоненты, которые явно помечены как DOWNLOADED или для которых указан ARCHIVE_FILE. Кроме того, опция ALL подразумевает ADD_REMOVE (если не указан NO_ADD_REMOVE).
ADD_REMOVE указывает, что CPack должен установить копию установщика, который можно вызвать из диалогового окна «Установка и удаление программ» Windows (через кнопку «Изменить»), чтобы изменить набор установленных компонентов. NO_ADD_REMOVE отключает это поведение. Эта опция игнорируется в Mac OS X.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/module/CPackComponent.html