Spec-Zone.ru › CMake 3.14

CPack

Создаёт установщики бинарных и исходных пакетов.

Введение

Модуль CPack генерирует файл CPackConfig.cmake предназначенный для последующего запуска программы cpack, где он управляет генерацией установщиков и/или исходных пакетов.

Включение модуля CPack добавляет две новые цели сборки, package и package_source, которые соответственно собирают бинарные и исходные установщики. Сгенерированные бинарные установщики содержат всё, что установлено через команду CMake install() (и устаревшие команды install_files(), install_programs() и install_targets()).

Для некоторых типов бинарных установщиков (включая графические установщики macOS и Windows), CPack генерирует установщики, которые позволяют пользователям выбирать отдельные компоненты приложения для установки. См. модуль CPackComponent для получения дополнительных сведений.

Генераторы CPack

Переменная CPACK_GENERATOR имеет разное значение в разных контекстах. В файле CMakeLists.txt, CPACK_GENERATOR является списком генераторов; и когда программа cpack запускается без других аргументов, она будет перебирать этот список и генерировать по одному пакету для каждого генератора. В файле конфигурации проекта CPACK_PROJECT_CONFIG_FILE, CPACK_GENERATOR является строкой, которая называет единственный генератор. Если вам требуется логика, специфичная для каждого генератора CPack, для управления другими настройками CPack, вам нужен файл CPACK_PROJECT_CONFIG_FILE.

Внутри самого дерева исходного кода CMake находится файл CPACK_PROJECT_CONFIG_FILE. Пример можно найти в файле верхнего уровня CMakeCPackOptions.cmake.in.

Если установлено, CPACK_PROJECT_CONFIG_FILE автоматически включается для каждого генератора. Он должен содержать только переопределения.

Вот как это работает:

  • Запускается cpack
  • Включается CPackConfig.cmake
  • Происходит итерация по генераторам, заданным опцией командной строки -G, или, если такая опция не указана, по списку генераторов, заданных переменной CPACK_GENERATOR в входном файле CPackConfig.cmake.
  • Для каждого генератора

    • переменная CPACK_GENERATOR устанавливается на текущий генератор
    • включается файл CPACK_PROJECT_CONFIG_FILE
    • генерируется пакет для этого генератора

Ключевой момент: для каждого генератора, перечисленного в CPACK_GENERATOR в CPackConfig.cmake, cpack переустанавливает CPACK_GENERATOR внутренне на текущий и затем включает CPACK_PROJECT_CONFIG_FILE.

Переменные, общие для всех генераторов CPack

Прежде чем включать этот модуль CPack в свой файл CMakeLists.txt, можно установить различные переменные для настройки получаемых установщиков. Наиболее часто используемые переменные:

CPACK_PACKAGE_NAME

Имя пакета (или приложения). Если не указано, по умолчанию используется имя проекта.

CPACK_PACKAGE_VENDOR

Имя поставщика пакета (например, «Kitware»). По умолчанию — «Humanity».

CPACK_PACKAGE_DIRECTORY

Директория, в которой CPack выполняет упаковку. Если не задана, по умолчанию используется директория сборки. Эта переменная может быть определена в файле конфигурации CPack или из опции командной строки cpack -B. Если установлено, опция командной строки переопределяет значение, найденное в файле конфигурации.

CPACK_PACKAGE_VERSION_MAJOR

Основная версия пакета. Эта переменная всегда установлена, но её значение по умолчанию зависит от того, были ли указаны детали версии в команде project() в файле CMakeLists.txt верхнего уровня. Если детали версии были указаны, значение по умолчанию будет CMAKE_PROJECT_VERSION_MAJOR. Если детали версии не были указаны, будет предполагаться версия по умолчанию 0.1.1, что приведёт к тому, что CPACK_PACKAGE_VERSION_MAJOR будет иметь значение по умолчанию 0.

CPACK_PACKAGE_VERSION_MINOR

Дополнительная версия пакета. Значение по умолчанию определяется на основе того, были ли указаны детали версии в команде project() в файле CMakeLists.txt верхнего уровня. Если детали версии были указаны, значение по умолчанию будет CMAKE_PROJECT_VERSION_MINOR, но если не было указано дополнительное число, то CPACK_PACKAGE_VERSION_MINOR останется незаданным. Если вообще не была указана версия проекта, по умолчанию будет предполагаться версия 0.1.1, что приведёт к тому, что CPACK_PACKAGE_VERSION_MINOR будет иметь значение по умолчанию 1.

CPACK_PACKAGE_VERSION_PATCH

Исправительная версия пакета. Значение по умолчанию определяется на основе того, были ли указаны детали версии в команде project() в файле CMakeLists.txt верхнего уровня. Если детали версии были указаны, значение по умолчанию будет CMAKE_PROJECT_VERSION_PATCH, но если не было указано число исправительной версии, то CPACK_PACKAGE_VERSION_PATCH останется незаданным. Если вообще не была указана версия проекта, по умолчанию будет предполагаться версия 0.1.1, что приведёт к тому, что CPACK_PACKAGE_VERSION_PATCH будет иметь значение по умолчанию 1.

CPACK_PACKAGE_DESCRIPTION

Описание проекта, используемое, например, на экране ввода установщиков Windows, сгенерированных CPack. Если не задано, значение этой переменной заполняется из файла, указанного в CPACK_PACKAGE_DESCRIPTION_FILE.

CPACK_PACKAGE_DESCRIPTION_FILE

Текстовый файл, используемый для описания проекта, когда CPACK_PACKAGE_DESCRIPTION не задан явно. Значение по умолчанию для CPACK_PACKAGE_DESCRIPTION_FILE указывает на встроенный шаблонный файл Templates/CPack.GenericDescription.txt.

CPACK_PACKAGE_DESCRIPTION_SUMMARY

Краткое описание проекта (только несколько слов). Если переменная CMAKE_PROJECT_DESCRIPTION установлена, она используется в качестве значения по умолчанию; в противном случае по умолчанию будет строка, сгенерированная CMake на основе CMAKE_PROJECT_NAME.

END_OF_DOCUMENT_MARKER
CPACK_PACKAGE_HOMEPAGE_URL

URL домашней страницы проекта. Значение по умолчанию взято из переменной CMAKE_PROJECT_HOMEPAGE_URL, которая устанавливается командой верхнего уровня project(), иначе значение по умолчанию будет пустым, если URL не был предоставлен команде project().

CPACK_PACKAGE_FILE_NAME

Имя файла пакета для генерации, без расширения. Например, cmake-2.6.1-Linux-i686. Значение по умолчанию:

${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}
CPACK_PACKAGE_INSTALL_DIRECTORY

Директория установки на целевой системе. Может использоваться некоторыми генераторами CPack, такими как NSIS, для создания директории установки, например, “CMake 2.5” ниже директории установки. Все установленные элементы будут помещены в эту директорию.

CPACK_PACKAGE_ICON

Изображение бренда, которое будет отображаться внутри установщика (используется графическими установщиками).

CPACK_PACKAGE_CHECKSUM

Алгоритм, который будет использоваться для генерации дополнительного файла с контрольной суммой пакета. Имя выходного файла будет:

${CPACK_PACKAGE_FILE_NAME}.${CPACK_PACKAGE_CHECKSUM}

Поддерживаемые алгоритмы — те, которые перечислены командой string(<HASH>).

CPACK_PROJECT_CONFIG_FILE

Файл конфигурации проекта CPack во время работы CPack. Этот файл включается во время cpack, один раз на генератор после того, как CPack установил CPACK_GENERATOR на фактический используемый генератор. Он позволяет устанавливать переменные CPACK_* для каждого генератора во время cpack.

CPACK_RESOURCE_FILE_LICENSE

Лицензия, которая будет встроена в установщик. Как правило, она отображается пользователю установщиком (часто с явной кнопкой «Принять», для графических установщиков) перед установкой. Этот файл лицензии НЕ добавляется к установленным файлам, но используется некоторыми генераторами CPack, такими как NSIS. Если вы хотите установить файл лицензии (возможно, такой же, как этот) вместе с вашим проектом, вы должны добавить соответствующую команду CMake install() в свой CMakeLists.txt.

CPACK_RESOURCE_FILE_README

Файл ReadMe, который будет встроен в установщик. Он обычно подробно описывает назначение проекта во время установки. Не все генераторы CPack используют этот файл.

CPACK_RESOURCE_FILE_WELCOME

Файл приветствия, который будет встроен в установщик. Он приветствует пользователей этого установщика. Обычно используется в графических установщиках на Windows и Mac OS X.

CPACK_MONOLITHIC_INSTALL

Отключает механизм установки на основе компонентов. При установке значение игнорируется, и все установленные элементы помещаются в один пакет «MONOLITHIC». Некоторые генераторы CPack выполняют монолитную упаковку по умолчанию и могут быть попрошены выполнить упаковку компонентов, установив CPACK_<GENNAME>_COMPONENT_INSTALL в TRUE.

CPACK_GENERATOR

Список генераторов CPack для использования. Если не указано, CPack создаст набор опций, следуя шаблону именования CPACK_BINARY_<GENNAME> (например, CPACK_BINARY_NSIS) позволяя пользователю включать/выключать отдельные генераторы. Если опция -G указана в командной строке команды cpack, она переопределит эту переменную и любые опции CPACK_BINARY_<GENNAME>.

CPACK_OUTPUT_CONFIG_FILE

Имя файла конфигурации бинарной сборки CPack. Этот файл — конфигурация CPack, сгенерированная модулем CPack для бинарных установщиков. Значение по умолчанию CPackConfig.cmake.

CPACK_PACKAGE_EXECUTABLES

Список исполняемых файлов и связанных текстовых меток, используемых для создания ярлыков в меню «Пуск». Например, если установить это в список ccmake;CMake, будет создан ярлык с именем «CMake», который запустит установленный исполняемый файл ccmake. Не все генераторы CPack его используют (по крайней мере, NSIS, WIX и OSXX11 не используют).

CPACK_STRIP_FILES

Список файлов для удаления. Начиная с CMake 2.6.0, CPACK_STRIP_FILES будет булевой переменной, которая включает удаление всех файлов (список файлов оценивается как TRUE в CMake, поэтому это изменение совместимо).

CPACK_VERBATIM_VARIABLES

Если установлено TRUE, значения переменных с префиксом CPACK_ будут экранированы перед записью в конфигурационные файлы, чтобы программа cpack получила их точно так, как они были указаны. В противном случае, символы, такие как кавычки и обратные слэши, могут привести к ошибкам синтаксического анализа или изменить значение, полученное программой cpack. Значение по умолчанию — FALSE для обратной совместимости.

Переменные для генераторов пакетов исходных кодов

Следующие переменные CPack специфичны для пакетов исходных кодов и не повлияют на пакеты двоичных файлов:

CPACK_SOURCE_PACKAGE_FILE_NAME

Имя пакета исходных кодов. Например, cmake-2.6.1.

CPACK_SOURCE_STRIP_FILES

Список файлов в дереве исходных кодов, которые будут удалены. Начиная с CMake 2.6.0, CPACK_SOURCE_STRIP_FILES будет булевой переменной, которая включает удаление всех файлов (список файлов оценивается как TRUE в CMake, поэтому это изменение совместимо).

CPACK_SOURCE_GENERATOR

Список генераторов, используемых для пакетов исходных кодов. Как и CPACK_GENERATOR, если это не указано, CPack создаст набор опций (например, CPACK_SOURCE_ZIP ), позволяя пользователям выбирать, какие пакеты будут сгенерированы.

CPACK_SOURCE_OUTPUT_CONFIG_FILE

Имя файла конфигурации CPack для исходных кодов. Этот файл — конфигурация CPack, сгенерированная модулем CPack для установщиков исходных кодов. Значение по умолчанию CPackSourceConfig.cmake.

CPACK_SOURCE_IGNORE_FILES

Шаблон файлов в дереве исходных кодов, которые не будут упакованы при создании пакета исходных кодов. Это список шаблонов регулярных выражений (которые должны быть должным образом экранированы), например, /CVS/;/\\.svn/;\\.swp$;\\.#;/#;.*~;cscope.*.

Переменные для расширенного использования

Следующие переменные предназначены для расширенного использования CPack:

CPACK_CMAKE_GENERATOR

Какой генератор CMake следует использовать, если проект является проектом CMake. По умолчанию используется значение CMAKE_GENERATOR. Немногим пользователям захочется изменить это значение.

CPACK_INSTALL_CMAKE_PROJECTS

Список из четырёх значений, которые указывают, какой проект нужно установить. Четыре значения: директория сборки, имя проекта, компонент проекта, директория. Если опущены, CPack создаст установщик, который установит всё.

CPACK_SYSTEM_NAME

Имя системы, по умолчанию это значение CMAKE_SYSTEM_NAME, за исключением Windows, где это будет win32 или win64.

CPACK_PACKAGE_VERSION

Полная версия пакета, используется внутри. По умолчанию она строится из CPACK_PACKAGE_VERSION_MAJOR, CPACK_PACKAGE_VERSION_MINOR и CPACK_PACKAGE_VERSION_PATCH.

CPACK_TOPLEVEL_TAG

Директория для установленных файлов.

CPACK_INSTALL_COMMANDS

Дополнительные команды для установки компонентов.

CPACK_INSTALLED_DIRECTORIES

Дополнительные директории для установки.

CPACK_PACKAGE_INSTALL_REGISTRY_KEY

Ключ реестра, используемый при установке этого проекта. Используется только установщиками для Windows. Значение по умолчанию основано на директории установки.

CPACK_CREATE_DESKTOP_LINKS

Список ярлыков рабочего стола для создания. Каждый ярлык рабочего стола требует соответствующей ярлыка в меню Пуск, созданного с помощью CPACK_PACKAGE_EXECUTABLES.

CPACK_BINARY_<GENNAME>

Параметры, сгенерированные CPack для генераторов бинарных файлов. Модуль CPack.cmake генерирует (если CPACK_GENERATOR не задано) набор параметров CMake (см. команду CMake option()), которые затем могут использоваться для выбора генератора(ов) CPack, используемого при построении целевого объекта package или при запуске cpack без опции -G.

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.14/module/CPack.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API