CPackComponent
Создание установочных пакетов библиотек и исходных кодов
Переменные, касающиеся компонентов CPack
Модуль CPackComponent — это модуль, который обрабатывает часть компонентов в CPack. Для общей информации о CPack см. модуль CPack.
Для некоторых типов установочных пакетов библиотек (включая графические установщики на macOS и Windows), CPack генерирует установщики, которые позволяют пользователям выбирать отдельные компоненты приложения для установки. Содержимое каждого компонента определяется аргументом COMPONENT команды INSTALL CMake. Эти компоненты могут быть снабжены понятными именами и описаниями, зависимостями между компонентами и т. д., а также сгруппированы различными способами для настройки итогового установщика. Более подробную информацию об установке, специфичной для компонентов, см. в командах cpack_add_*, описанных ниже.
Установка, специфичная для компонентов, позволяет пользователям выбирать определенные наборы компонентов для установки во время процесса установки. Установочные компоненты определяются аргументом COMPONENT команд CMake INSTALL и должны быть дополнительно описаны следующими командами CPack:
-
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 (по умолчанию): создаёт один файл пакета на каждую группу компонентов
- ALL_COMPONENTS_IN_ONE: создаёт один пакет со всеми (запрошенными) компонентами
- IGNORE: создаёт один пакет на каждый компонент, то есть игнорирует группировку компонентов
Можно задать различную группировку для разных генераторов CPack, используя файл CPACK_PROJECT_CONFIG_FILE.
-
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, имя которого задаётся аргументом COMPONENT в команде CMake INSTALL.
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])
Команда cmake_add_component описывает компонент установки, который пользователь может выбрать для установки или удаления в рамках графического процесса установки. compname — это имя компонента, как оно предоставляется аргументу COMPONENT одной или нескольких команд CMake INSTALL.
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 или более поздней версии.
END_OF_DOCUMENT_MARKERАргумент site — это URL, где будут храниться архивы загружаемых компонентов, например, https://cmake.org/files/2.6.1/installer/. Все архивы, созданные CPack, должны быть загружены по этому адресу.
UPLOAD_DIRECTORY — это локальный каталог, в котором CPack будет создавать различные архивы для каждого компонента. Содержимое этого каталога должно быть загружено по адресу, указанному в аргументе site. Если этот аргумент опущен, CPack будет использовать каталог CPackUploads в каталоге библиотек CMake для хранения созданных архивов.
Флаг ALL указывает на то, что должны быть загружены все компоненты. В противном случае будут загружены только те компоненты, которые явно помечены как DOWNLOADED или для которых указан ARCHIVE_FILE. Кроме того, опция ALL подразумевает ADD_REMOVE (если не указан NO_ADD_REMOVE).
ADD_REMOVE указывает, что CPack должен установить копию установщика, который можно вызвать из диалогового окна «Добавить/Удалить программы» Windows (через кнопку «Изменить») для изменения набора установленных компонентов. NO_ADD_REMOVE отключает это поведение. Эта опция игнорируется в macOS.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.17/module/CPackComponent.html