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 указывает, что этот компонент по умолчанию должен быть отключён (не выбран). Пользователь может выбрать этот компонент для установки, если он не скрыт.
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 определяет набор предварительно выбранных компонентов, представляющих собой типовой случай использования приложения. Например, тип установки «Разработчик» может включать приложение вместе с его заголовочными файлами и библиотеками, а тип установки «Конечный пользователь» может включать только исполняемый файл приложения.
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/2.6.1/installer/ Все архивы, созданные 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–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.18/module/CPackComponent.html