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 или OFF/ON.
-
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 -
True, если этот компонент скрыт от пользователя.
-
CPACK_COMPONENT_<compName>_REQUIRED -
True, если этот компонент обязателен.
-
CPACK_COMPONENT_<compName>_DISABLED -
True, если этот компонент по умолчанию не выбран для установки.
Команды
Добавить компонент
-
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 или более поздней версии.
Аргумент site — это URL, где будут храниться архивы загружаемых компонентов, например, https://cmake.org/files/v3.25/ Все архивы, созданные CPack, должны быть загружены в это место.
UPLOAD_DIRECTORY — это локальный каталог, где CPack создаст различные архивы для каждого компонента. Содержимое этого каталога должно быть загружено в место, доступное по URL, указанному в аргументе site. Если этот параметр опущен, CPack будет использовать каталог CPackUploads в каталоге двоичных файлов CMake для хранения сгенерированных архивов.
Флаг ALL указывает на то, что должны быть загружены все компоненты. В противном случае будут загружены только те компоненты, которые явно помечены как DOWNLOADED или у которых указан ARCHIVE_FILE. Кроме того, опция ALL подразумевает ADD_REMOVE (если не указан NO_ADD_REMOVE).
ADD_REMOVE указывает, что CPack должен установить копию установщика, которую можно вызвать из диалогового окна «Установка и удаление программ» Windows (через кнопку «Изменить»), чтобы изменить набор установленных компонентов. NO_ADD_REMOVE отключает это поведение. Этот параметр игнорируется в Mac OS X.
© 2000–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/module/CPackComponent.html