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 -
Истина, если этот компонент скрыт от пользователя.
-
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 указывает, что этот компонент по умолчанию должен быть отключён (не выбран). Пользователь свободен выбрать этот компонент для установки, если он также не скрыт.
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/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–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.20/module/CPackComponent.html